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

Trabajando con Gruop By en SQL Server

Estas en el tema de Trabajando con Gruop By en SQL Server en el foro de Bases de Datos General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/02/2005, 11:59
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
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
  #2 (permalink)  
Antiguo 02/02/2005, 12:21
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 1 mes
Puntos: 7
Ya se de donde es que el SUM está sacando los demás valores.
Quité todos los Group by y me devuelve esto:

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                           80          SN     2004        12     24     RICA   AG     HORAS EXTRAS 35%                                   6101030    130102     4.0000                439.4700
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
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     23     RICA   AG     HORAS EXTRAS 35%                                   6101030    130102     3.5000                348.0700

(5 row(s) affected)
Ya entiendo porque me da 8, 7 y 8.
__________________
.::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--
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 12:10.