case bajo rango de datos dados mysql
Publicado por Hfr (21 intervenciones) el 06/03/2017 19:35:30
hola chicos tengo un problema con esta consultada de myslql, me sale mal
lo importante s le case de las fechas
en teoría cuando el id del concepto de la novedad no este dentro de los rangos que se inca en el case pues el dato debe de ser null, pero resulta que me toma los datos que no cumplen con la condición del case por ejemplo
novedad.IDCOMCEPTO_NOVEDAD >8 <14 then
aquí solo debería de tomar los id 9-10-11-12-13
y así sucesivamente, pero tengo id de otros valores diferentes a los del case y puff hace la operación en vez de mostrar null..
una manito pofis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
SELECT empleado.CC_EMPLEADO,empleado.FULLNOMBRE_EMPLEADO,novedad.*,
programa.nombre_programa, novedad.VALOR_NOVEDAD, comceptos.NOMBRE_COMCEPTO, novedad.observaciones,
case novedad.INDICADORTIPO_NOVEDAD
WHEN 1 then 'fija'
WHEN 0 then 'eventual'
else 'Sin definir'
end tiponovedad,
IF(novedad.FECHA_NOVEDAD IS NULL, 'NO APLICA', DATE_FORMAT(novedad.FECHA_NOVEDAD, ' %d de %M %Y')) fregistro,
IF(novedad.FECHAINICIO_NOVEDAD IS NULL, 'NO APLICA', DATE_FORMAT(novedad.FECHAINICIO_NOVEDAD, ' %d de %M %Y')) fin,
IF(novedad.FECHAFIN_NOVEDAD IS NULL, 'NO APLICA', DATE_FORMAT(novedad.FECHAFIN_NOVEDAD, ' %d de %M %Y')) ffin,
CASE novedad.FECHAINICIO_NOVEDAD
WHEN novedad.FECHAINICIO_NOVEDAD = null then 'no aplica '
else TIMESTAMPDIFF (DAY, novedad.FECHAINICIO_NOVEDAD, novedad.FECHAFIN_NOVEDAD)
end DIAS,
case novedad.FECHAFIN_NOVEDAD
WHEn novedad.FECHAFIN_NOVEDAD = null then 'no aplica '
else timestampdiff (month, novedad.FECHAINICIO_NOVEDAD, novedad.FECHAFIN_NOVEDAD )
end MESES ,
CASE WHEN novedad.IDCOMCEPTO_NOVEDAD >8 <=14 then (
SELECT
SUM(
TIMESTAMPDIFF (
DAY, FECHAINICIO_NOVEDAD, FECHAFIN_NOVEDAD
)
)
from
novedad
where
YEAR(FECHA_NOVEDAD)= YEAR(
CURDATE()
)
AND MONTH(FECHA_NOVEDAD)= MONTH(
CURDATE()
)
and CCEMPLEADO_NOVEDAD = empleado.CC_EMPLEADO
)
WHEN novedad.IDCOMCEPTO_NOVEDAD >22 <26 then (
SELECT
SUM(
TIMESTAMPDIFF (
DAY, FECHAINICIO_NOVEDAD, FECHAFIN_NOVEDAD
)
)
from
novedad
where
YEAR(FECHA_NOVEDAD)= YEAR(
CURDATE()
)
AND MONTH(FECHA_NOVEDAD)= MONTH(
CURDATE()
)
and CCEMPLEADO_NOVEDAD = empleado.CC_EMPLEADO
)
WHEN novedad.IDCOMCEPTO_NOVEDAD >31 <38 then (
SELECT
SUM(
TIMESTAMPDIFF (
DAY, FECHAINICIO_NOVEDAD, FECHAFIN_NOVEDAD
)
)
from
novedad
where
YEAR(FECHA_NOVEDAD)= YEAR(
CURDATE()
)
AND MONTH(FECHA_NOVEDAD)= MONTH(
CURDATE()
)
and CCEMPLEADO_NOVEDAD = empleado.CC_EMPLEADO
)
WHEN novedad.IDCOMCEPTO_NOVEDAD >80 <87 then (
SELECT
SUM(
TIMESTAMPDIFF (
DAY, FECHAINICIO_NOVEDAD, FECHAFIN_NOVEDAD
)
)
from
novedad
where
YEAR(FECHA_NOVEDAD)= YEAR(
CURDATE()
)
AND MONTH(FECHA_NOVEDAD)= MONTH(
CURDATE()
)
and CCEMPLEADO_NOVEDAD = empleado.CC_EMPLEADO
)
else null end as diast
FROM
empleado as empleado
LEFT JOIN novedad novedad ON novedad.CCEMPLEADO_NOVEDAD = empleado.CC_EMPLEADO
LEFT JOIN programa programa ON programa.id_programa = empleado.idprograma_empleado
left join comceptos comceptos on comceptos.ID_COMCPETO = novedad.IDCOMCEPTO_NOVEDAD
WHERE
empleado.idprograma_empleado = '2584' and empleado.CC_EMPLEADO=novedad.CCEMPLEADO_NOVEDAD
and MONTH(novedad.FECHA_NOVEDAD)=MONTH(CURDATE())
AND YEAR(novedad.FECHA_NOVEDAD)=YEAR(CURDATE())
GROUP by novedad.ID_NOVEDAD
order by
empleado.FULLNOMBRE_EMPLEADO asc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CASE WHEN novedad.IDCOMCEPTO_NOVEDAD >8 <14 then (
SELECT
SUM(
TIMESTAMPDIFF (
DAY, FECHAINICIO_NOVEDAD, FECHAFIN_NOVEDAD
)
)
from
novedad
where
YEAR(FECHA_NOVEDAD)= YEAR(
CURDATE()
)
AND MONTH(FECHA_NOVEDAD)= MONTH(
CURDATE()
)
and CCEMPLEADO_NOVEDAD = empleado.CC_EMPLEADO
en teoría cuando el id del concepto de la novedad no este dentro de los rangos que se inca en el case pues el dato debe de ser null, pero resulta que me toma los datos que no cumplen con la condición del case por ejemplo
novedad.IDCOMCEPTO_NOVEDAD >8 <14 then
aquí solo debería de tomar los id 9-10-11-12-13
y así sucesivamente, pero tengo id de otros valores diferentes a los del case y puff hace la operación en vez de mostrar null..
una manito pofis
Valora esta pregunta


0