
02/02/2005, 11:59
|
 | | | Fecha de Ingreso: marzo-2002 Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 23 años Puntos: 7 | |
Trabajando con Gruop By en SQL Server No entiendo lo que le está pasando a mi Select, porque me está sumando registros aunque sean distintos.
Me explico:
Tengo el siguiente select que me trae todos los registros agrupados por todos los campos:
Código:
SELECT SapPago.TRACVE AS Empleado_ID, Trltag0.DATCVE AS Cod_Depto, Trltag0.DATDES AS Desc_Depto, Trltah0.DATCVE AS Cod_Dir,
Trltah0.DATDES AS Desc_Dir, SapPago.CONCOD, SapPago.TNOCVE, Tacno.CPRANO, Tacno.CPRMAC, Tacno.CPRPER, SapPago.CODCIA, SapPago.CNOCVE, SapPago.TRNTXT, SapPago.NUMCTA, SapPago.TRNCEN,
Tacno.TRNTIE AS Horas, Tacno.TRNIMP AS Monto
FROM SapPago INNER JOIN
Tacno ON SapPago.TRACVE = Tacno.TRACVE AND SapPago.CONCOD = Tacno.CONCOD AND SapPago.CRNANO = Tacno.CPRANO INNER JOIN
Trltag0 ON SapPago.TRACVE = Trltag0.TRACVE INNER JOIN
Trltah0 ON SapPago.TRACVE = Trltah0.TRACVE
WHERE (Tacno.CPRPER IN ('23', '24')) AND (Tacno.CPRANO = 2004) AND (SapPago.TRACVE = '406') AND (SapPago.CONCOD IN ('80', '85')) AND
(SapPago.ORGCTA = '1')
GROUP BY SapPago.TRACVE, Trltag0.DATCVE, Trltag0.DATDES, Trltah0.DATCVE, Trltah0.DATDES, SapPago.CONCOD, SapPago.TNOCVE, Tacno.CPRANO, Tacno.CPRMAC, Tacno.CPRPER, SapPago.CODCIA, SapPago.CNOCVE, SapPago.TRNTXT, SapPago.NUMCTA, SapPago.TRNCEN,
Tacno.TRNTIE, Tacno.TRNIMP Me devuelve el siguiente resultado (Ver montos a la derecha):
Código:
Empleado_ID Cod_Depto Desc_Depto Cod_Dir Desc_Dir CONCOD TNOCVE CPRANO CPRMAC CPRPER CODCIA CNOCVE TRNTXT NUMCTA TRNCEN Horas Monto
----------- ---------- -------------------------------------------------- ---------- -------------------------------------------------- ----------- ------ ----------- ------ ------ ------ ------ -------------------------------------------------- ---------- ---------- --------------------- ---------------------
406 07040100 MANTENIMIENTO DE PLANTA 07000000 DIRECCION DE OPERACIONES 85 SN 2004 12 23 RICA AG HORAS EXTRAS 100% 6101040 130102 8.0000 1178.6800
406 07040100 MANTENIMIENTO DE PLANTA 07000000 DIRECCION DE OPERACIONES 80 SN 2004 12 23 RICA AG HORAS EXTRAS 35% 6101030 130102 3.5000 348.0700
406 07040100 MANTENIMIENTO DE PLANTA 07000000 DIRECCION DE OPERACIONES 80 SN 2004 12 24 RICA AG HORAS EXTRAS 35% 6101030 130102 4.0000 439.4700
(3 row(s) affected)
Las colunmas que están en rojo son a las que les voy hacer el SUM.
Hago el siguiente select que suma el campo Horas y el Campo Monto y quito del Group By dichos campos:
Código:
SELECT SapPago.TRACVE AS Empleado_ID, Trltag0.DATCVE AS Cod_Depto, Trltag0.DATDES AS Desc_Depto, Trltah0.DATCVE AS Cod_Dir,
Trltah0.DATDES AS Desc_Dir, SapPago.CONCOD, SapPago.TNOCVE, Tacno.CPRANO, Tacno.CPRMAC, Tacno.CPRPER, SapPago.CODCIA,
SapPago.CNOCVE, SapPago.TRNTXT, SapPago.NUMCTA, SapPago.TRNCEN,
SUM(Tacno.TRNTIE) AS Horas, SUM(Tacno.TRNIMP) AS Monto
FROM SapPago INNER JOIN
Tacno ON SapPago.TRACVE = Tacno.TRACVE AND SapPago.CONCOD = Tacno.CONCOD AND SapPago.CRNANO = Tacno.CPRANO INNER JOIN
Trltag0 ON SapPago.TRACVE = Trltag0.TRACVE INNER JOIN
Trltah0 ON SapPago.TRACVE = Trltah0.TRACVE
WHERE (Tacno.CPRPER IN ('23', '24')) AND (Tacno.CPRANO = 2004) AND (SapPago.TRACVE = '406') AND (SapPago.CONCOD IN ('80', '85')) AND
(SapPago.ORGCTA = '1')
GROUP BY SapPago.TRACVE, Trltag0.DATCVE, Trltag0.DATDES, Trltah0.DATCVE, Trltah0.DATDES, SapPago.CONCOD, SapPago.TNOCVE, Tacno.CPRANO,
Tacno.CPRMAC, Tacno.CPRPER, SapPago.CODCIA, SapPago.CNOCVE, SapPago.TRNTXT, SapPago.NUMCTA, SapPago.TRNCEN
Me devuelve el siguiente resultado (Ver montos a la derecha):
Código:
Empleado_ID Cod_Depto Desc_Depto Cod_Dir Desc_Dir CONCOD TNOCVE CPRANO CPRMAC CPRPER CODCIA CNOCVE TRNTXT NUMCTA TRNCEN Horas Monto
----------- ---------- -------------------------------------------------- ---------- -------------------------------------------------- ----------- ------ ----------- ------ ------ ------ ------ -------------------------------------------------- ---------- ---------- --------------------- ---------------------
406 07040100 MANTENIMIENTO DE PLANTA 07000000 DIRECCION DE OPERACIONES 85 SN 2004 12 23 RICA AG HORAS EXTRAS 100% 6101040 130102 8.0000 1178.6800
406 07040100 MANTENIMIENTO DE PLANTA 07000000 DIRECCION DE OPERACIONES 80 SN 2004 12 23 RICA AG HORAS EXTRAS 35% 6101030 130102 7.0000 696.1400
406 07040100 MANTENIMIENTO DE PLANTA 07000000 DIRECCION DE OPERACIONES 80 SN 2004 12 24 RICA AG HORAS EXTRAS 35% 6101030 130102 8.0000 878.9400
(3 row(s) affected)
Por qué los montos son diferentes?
Con un select me devuelve 8, 3.5 y 4 y en el otro 8, 7 y 8.
No entiendo...
__________________ .::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
Última edición por RsOfT; 02/02/2005 a las 12:01 |