SQL Server - Consulta en SQL Server

   
Vista:

Consulta en SQL Server

Publicado por Oscar oscarm@hulteccr.com (2 intervenciones) el 24/02/2014 22:40:27
Tengo una tabla donde en un registro se guarda el numero de empleado, el numero de planilla, el código de la deducción y el monto.

Necesito hacer una consulta donde yo pueda pedir de esta tabla, un rango de numeros de planilla, por ejemplo de la 1 a la 220, y que me muestre el número de empleado, el número de planilla, el codigo de la deducción y el monto pero solo para las deducciones 'DS08' y 'AS10'. Pero necesito que solo aparezcan cuando en la tabla NO EXISTAN , el código de deducción 'DS08' al mismo tiempo que el 'AS10' , para la misma planilla y en el mismo empleado .

Dicho en otras palabras si para un mismo número de nómina y un mismo empleado, existen las dos deducciones entonces que no me traiga el registro, pero por ejemplo si solo está la 'AS10' que me lo traiga.

Voy a adjuntar la consulta que yo hice, pero que lo que me trae son todas las veces que existen estos códigos y es muy difícil de revisar.

SELECT TERRA.EMPLEADO_CONC_NOMI.EMPLEADO, TERRA.EMPLEADO_CONC_NOMI.NOMINA, TERRA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA,
TERRA.EMPLEADO_CONC_NOMI.CONCEPTO, TERRA.EMPLEADO_CONC_NOMI.TOTAL
FROM TERRA.EMPLEADO_CONC_NOMI
WHERE TERRA.EMPLEADO_CONC_NOMI.NOMINA = 'S' AND
TERRA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA >= 1 AND TERRA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA <= 50 AND
TERRA.EMPLEADO_CONC_NOMI.CONCEPTO in ('DS08','AS10')
ORDER BY TERRA.EMPLEADO_CONC_NOMI.EMPLEADO, TERRA.EMPLEADO_CONC_NOMI.NUMERO_NOMINA, TERRA.EMPLEADO_CONC_NOMI.CONCEPTO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Consulta en SQL Server

Publicado por Isaias (3186 intervenciones) el 25/02/2014 00:25:08
Te voy a dar un tip.

¿Viste MANEJO DE CONJUNTOS en la escuela?

Entonces, el conjunto AS10, debes "traérmelo", SI Y SOLO SI, el conjunto 'DS08', NO EXISTE.

Si te das cuenta, tienes DOS conjuntas, deben ser DOS QUERY'S, y hacer una distinción del segundo query

¿Me explique?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta en SQL Server

Publicado por Oscar (2 intervenciones) el 25/02/2014 00:30:37
Gracias Isaias por tu respuesta. Analizando un poco el problema llegué a la misma conclusion y entonces hice el query que puedes ver abajo. El problema es que en lugar de traerme los que necesito, me muestra todos los que no necesito..


SELECT c.EMPLEADO, c.NOMINA, c.NUMERO_NOMINA,c.CONCEPTO, c.TOTAL
FROM TERRA.EMPLEADO_CONC_NOMI C
WHERE c.NOMINA = 'M' AND
c.NUMERO_NOMINA >= 1 AND c.NUMERO_NOMINA <= 250 AND
c.CONCEPTO In ('DM08','AM10') and
c.CONCEPTO NOT in
(SELECT d.CONCEPTO
FROM TERRA.EMPLEADO_CONC_NOMI D
WHERE C.EMPLEADO = D.EMPLEADO and
D.NOMINA = 'M' AND
C.NUMERO_NOMINA = D.NUMERO_NOMINA AND
D.CONCEPTO IN ('AM10'))
ORDER BY c.EMPLEADO, c.NUMERO_NOMINA, c.CONCEPTO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Consulta en SQL Server

Publicado por Isaias (3186 intervenciones) el 25/02/2014 17:47:55
Si estas medianamente familiarizado con SQL, deberías saber que el IN (subconsulta), es la ULTIMA OPCION que debes ocupar, para eso tienes el EXISTS o el NOT EXISTS

Adelante, pruébalo ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar