Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Problema con un select

Estas en el tema de Problema con un select en el foro de SQL Server en Foros del Web. Tengo la siguiente instrucción SELECT EMPL.cod_empleado, RTRIM ( LTRIM ( EMP.nombres_empleado )) + ' ' + RTRIM ( LTRIM ( EMP.apellidos_empleado )), SUM (EMPL.sal_ordinario + ...
  #1 (permalink)  
Antiguo 29/01/2013, 11:06
 
Fecha de Ingreso: junio-2008
Mensajes: 109
Antigüedad: 15 años, 11 meses
Puntos: 0
Problema con un select

Tengo la siguiente instrucción

SELECT
EMPL.cod_empleado,
RTRIM ( LTRIM ( EMP.nombres_empleado )) + ' ' + RTRIM ( LTRIM ( EMP.apellidos_empleado )),
SUM (EMPL.sal_ordinario + EMPL.otros_ingresos + EMPL.otros_ingresos_no_gravados),
SUM (EMPL.afp),
SUM ((EMPL.sal_ordinario + EMPL.otros_ingresos + EMPL.otros_ingresos_no_gravados) - EMPL.afp),

SUM (EMPL.isr) AS ISR,
SUM (EMPL.seguro_social),
EMP.nit_empleado

FROM sysadm.pl_emp_planilla EMPL
LEFT OUTER JOIN sysadm.empleado AS EMP
ON EMP.num_empresa = EMPL.num_empresa AND EMP.cod_empleado = EMPL.cod_empleado

WHERE
EMPL.isr > 0 AND EMPL.num_empresa = 5
AND EMPL.fecha_inicio_planilla >= '2012-01-01' OR EMPL.fecha_inicio_planilla <= '2012-12-15'
GROUP BY EMPL.cod_empleado, EMP.nit_empleado, EMP.nombres_empleado, EMP.apellidos_empleado
ORDER BY 2

El problema que quiero que me devuelva todos los registros donde el campo ISR sea mayor a cero pero me está devolviendo muchos registros donde ISR es igual a cero
  #2 (permalink)  
Antiguo 29/01/2013, 11:19
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Problema con un select

Lo que te ocurre es culpa del OR en el where, esta funcionando como un separador:
Condicion OR Condicion por ende los que te muestran un isr igual a 0 tienen una fecha de inicio planilla <= '2012-12-15'

Para solucionarlo simplemente pon un paréntesis en el where de esta forma:
WHERE EMPL.isr > 0 AND EMPL.num_empresa = 5
AND (EMPL.fecha_inicio_planilla >= '2012-01-01' OR EMPL.fecha_inicio_planilla <= '2012-12-15')

No lo he probado pero si eso no funciona entonces simplemente repite la primera condicion despues del OR asi:
WHERE EMPL.isr > 0 AND EMPL.num_empresa = 5
AND EMPL.fecha_inicio_planilla >= '2012-01-01' OR EMPL.isr > 0 AND EMPL.num_empresa = 5 AND
EMPL.fecha_inicio_planilla <= '2012-12-15'

yy listo, espero te funcione, sino avisas ;)
Saludos
  #3 (permalink)  
Antiguo 29/01/2013, 11:26
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con un select

creo que la solucion seria:

WHERE
(EMPL.isr > 0 AND EMPL.num_empresa = 5)
AND (EMPL.fecha_inicio_planilla >= '2012-01-01' OR EMPL.isr > 0 AND EMPL.num_empresa = 5 AND
EMPL.fecha_inicio_planilla <= '2012-12-15')

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 29/01/2013, 11:33
 
Fecha de Ingreso: junio-2008
Mensajes: 109
Antigüedad: 15 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Problema con un select

Gracias me ha funcionado

Etiquetas: select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:23.