cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda Agrupación información en un query

Former Member
0 Kudos

Jóvenes expertos tengo el siguiente inconveniente necesito en base a un itemcode colocarlo en una columna todo lo que tiene que ver con este pero al momento de ejecutarlo en efecto me coloca los montos en donde corresponde pero me los coloca en todas las facturas que existen, en todos los meses, estoy utilizando un sub-query, ya probe con un Case When pero con este ultimo no me coloca montos correctos y hace lo mismo lo coloca en todas las facturas.

El subquery que estoy utilizando es

isnull((Select X.GTotal FROM RPC1  X WHERE (X.ItemCode = 'PLA0017')AND X.DocEntry = T2.DocEntry ),0)

Y el Case es

Case when T3.ItemCode = 'PLA0017' Then T3.GTotal Else '0' end)

Si me pudieran ayudar al respecto se los agradecería bastante el query en general es el siguiente:

SELECT DISTINCT T4.CardCode,T4.CardName, T5.U_Edad, (Case When T5.Gender = 'M' Then 'Masculino' Else 'Femenino' end)[Sexo],

                                        T5.U_Nacionalidad, T5.Profession,

                                        T5.U_IGSS, T5.U_Cedula, T5.U_FeIngre, T0.DocNum, T0.[TaxDate], T0.[DocDate],

                    (Case When T1.Quantity >'1' Then(T1.Quantity*71.4286) Else '0' End)[Salario_en_Quetzalez],

                    (Case When T1.Quantity>'1' Then T1.Quantity else '0' end) [Dias Trabajados],

                    '8'[Ordinarias], '0'[Extraordinarias],

                    isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0001')AND Y.DocEntry = T0.DocEntry),0)[FOrdinario_Salario],

                    isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0003')AND Y.DocEntry = T0.DocEntry),0)[Extraordinario],

                    isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0001')AND Y.DocEntry = T0.DocEntry),0)[Septimo_y_Sueldo_Salario],

                    isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0016')AND Y.DocEntry = T1.DocEntry),0)as 'Vacaciones',

            ((isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0001')AND Y.DocEntry = T0.DocEntry),0)+ --[Septimo_y_Sueldo_Salario]

              isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0016')AND Y.DocEntry = T1.DocEntry),0)))[Salario Total],

            ((isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0001')AND Y.DocEntry = T0.DocEntry),0)+--[FOrdinario_Salario],

                    isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0003')AND Y.DocEntry = T0.DocEntry),0)+--[HORAS EXTRAS],

                    isnull((Select Y.GTotal FROM PCH1 Y WHERE (Y.itemcode = 'PLA0016')AND Y.DocEntry = T0.DocEntry),0))*0.483/10)[IGSS],

          isnull((Select X.GTotal FROM RPC1  X WHERE (X.ItemCode = 'PLA0017')AND X.DocEntry = T2.DocEntry ),0)[NOtras_Deducciones]

 

          FROM OPCH T0  INNER JOIN --Factura Proveedores

                     PCH1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN --Detalle Factura Proveedores

                     ORPC T2 ON T0.CardCode = T2.CardCode INNER JOIN --Notas de Credito Proveedores

                     RPC1 T3 ON T2.DocEntry = T3.DocEntry INNER JOIN --Detalle Notas de Credito Proveedores

                     OCRD T4 ON T0.CardCode = T4.CardCode INNER JOIN --Socios de Negocios

                     OCPR T5 ON T0.CntctCode = T5.CntctCode                               --Personas de Contacto de Socios de Negocios

WHERE T0.[CardCode] like 'O%%' and T4.CardCode = 'O-00006'

GROUP BY T0.[DocNum], T0.[TaxDate], T0.[DocDate], T1.[Quantity], T1.[ItemCode], T1.[GTotal], T1.[DocEntry],

                     T3.DocEntry, T4.CardCode,T4.CardName, T5.U_Edad, T5.Gender, T5.U_Nacionalidad, T5.Profession,

                     T5.U_IGSS, T5.U_Cedula, T5.U_FeIngre, T2.DocEntry, T0.DocEntry, T2.DocDate, T3.ItemCode

ORDER BY T0.[DocDate]

La columna que no se duplica es la que dice NOtrasDeducciones

De antemano muy agradecido por su ayuda.

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Que tal Carlos,

Las notas de crédito que necesitas en tu consulta están ligadas a las facturas de proveedor? es decir, si le das desde la factura "Copiar a - nota de crédito". Si esto es así, pudieras sustituir los INNER que tienes para las notas de crédito de esta manera:

INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry

LEFT  JOIN RPC1 T2 ON T1.ObjType = T2.BaseType AND T1.DocEntry = T2.BaseEntry AND T1.LineNum = T2.BaseLine AND T2.ItemCode = 'PLA0017'

y en el SELECT hacer un SUM(T2.GTotal), tambien debes quitar del GROUP BY los campos relacionados a las notas de crédito, para que no te repita líneas por cada coincidencia. Porque al hacer esto:

FROM OPCH T0

INNER JOIN PCH1 T1 ON T0.DocEntry = T1.DocEntry

INNER JOIN ORPC T2 ON T0.CardCode = T2.CardCode

INNER JOIN RPC1 T3 ON T2.DocEntry = T3.DocEntry

estás condicionando que te traiga las notas de crédito que coincidan con el proveedor de cada factura.

Espero te sea de utilidad.

Saludos.

Answers (1)

Answers (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas tardes

Prueba agregando un SUM(Y.GTotal) en las subquerys.

Saludos

Former Member
0 Kudos

Gracias Felipe pero fijate que si realizo lo que me indicas me coloca 12 veces la misma factura.

Por si tuvieras otra idea te lo agradecería bastante.

Saludos y gracias por tu ayuda.