Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2005, 11:59
Avatar de RsOfT
RsOfT
 
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 2 meses
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