cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda Query

Former Member
0 Kudos

Jovenes experto tengo un query que no me esta respetando las condiciones, necesito hacer un reporte por columna pero resulta que hay filas que se duplican y ya probe hacerlo por medio de este comando isnull((Select max(isnull(Y.Gtotal,0.00)) from PCH1 Y where Y.ItemCode = 'PLA0001'),0) y si despliega la informacion pero me muestra en todas la filas el monto mayor, y lo probe con un Case When y este si me respeta todo pero ahi es en donde me duplica las filas en algunos casos.

Les coloco el query que en donde se duplica la linea espero me pueda ayudar a detectar donde esta mi problemita.

SELECT DISTINCT T0.CardCode, T0.CardName, T2.U_Edad, T2.Gender, T2.U_Nacionalidad, T2.Profession,

                    T2.U_IGSS, T2.U_Cedula, T2.U_FeIngre, T6.endDate, T6.Details, T0.TaxDate, T0.DocDate,

                    (T1.Quantity*71.43)[Salario en Quetzalez],

                    T1.Quantity, '8'[Ordinarias], '0.00'[Extraordinarias],

                    (case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14)*13) Else (T1.Quantity*71.43)end)[Ordinario],

                    '0.00'[Extra Ordinario],

                    (Case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14))Else '0.00'end)[Septimo ],

                    (case When T1.ItemCode = 'PLA0016' Then T1.Gtotal else '0' end)[Vacaciones],

                    (((case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14)*13) Else (T1.Quantity*71.43)end)+

                     (Case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14))Else '0.00'end)+

                     (case When T1.ItemCode = 'PLA0016' Then T1.Gtotal else '0' end)))[Total],

                    (((case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14)*13) Else (T1.Quantity*71.43)end)+

                     (Case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14))Else '0.00'end)+

                     (case When T1.ItemCode = 'PLA0016' Then T1.Gtotal else '0' end)))*0.483/10[IGS],

                     ((case When T4.ItemCode = 'PLA0017' Then T4.Gtotal else '0' end)+

                      (case When T4.ItemCode = 'PLA0018' Then T4.Gtotal else '0' end)+

                      (case When T4.ItemCode = 'PLA0019' Then T4.Gtotal else '0' end)+

                      (case When T4.ItemCode = 'PLA0020' Then T4.Gtotal else '0' end))[Otras Deducciones],

                    ((((case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14)*13) Else (T1.Quantity*71.43)end)+

                     (Case when T1.Quantity = '14' Then (((T1.Quantity*71.43)/14))Else '0.00'end)+

                     (case When T1.ItemCode = 'PLA0016' Then T1.Gtotal else '0' end)))*0.483/10+

                     (case When T4.ItemCode = 'PLA0017' Then T4.Gtotal else '0' end)+

                     (case When T4.ItemCode = 'PLA0018' Then T4.Gtotal else '0' end)+

                     (case When T4.ItemCode = 'PLA0019' Then T4.Gtotal else '0' end)+

                     (case When T4.ItemCode = 'PLA0020' Then T4.Gtotal else '0' end))[Total Deducciones],

                     ' '[Bono 14 Aguinaldo y Otros]--, --REVISAR ESTE RUBRO PARA VER DE DONDE SALE EL VALOR --

                    --(case When T1.ItemCode = 'PLA0002' Then T1.Gtotal else '0' end)--+

                    -- (case When T1.ItemCode = 'PLA0005' Then T1.Gtotal else '0' end)))[Incentivo]

          FROM OPCH T0  INNER JOIN

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

                     OCPR T2 ON T0.CntctCode = T2.CntctCode INNER JOIN

                     ORPC T3 ON T2.CntctCode = T3.CntctCode INNER JOIN

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

                     OCRD T5 ON T0.CardCode = T5.CardCode INNER JOIN

                     OCLG T6 ON T5.CardCode = T6.CardCode

WHERE T5.CardCode = 'O-00500'

GROUP BY T0.CardCode, T0.CardName, T2.U_Edad, T2.Gender, T2.U_Nacionalidad, T2.Profession,

                     T2.U_IGSS, T2.U_Cedula, T2.U_FeIngre, T6.endDate, T6.Details, T0.TaxDate, T0.DocDate,

                     T1.GTotal, T1.ItemCode, T1.Quantity, T4.ItemCode, T4.Gtotal

De antemano muy agradecido por la ayuda.

Saludos Cordiales

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hola Javier,

Podrias intentar con este sub-select:

(select t11.Gtotal from PCH1 t11 where (t11.ItemCode = 'PLA0002' OR  t11.ItemCode = 'PLA0005') AND t11.DocEntry = T0.DocEntry)

si te genera un error de mas de un resultado podes usar ahí el max() o la otra opción seria que trabajes con tablas temporales o (lo que mas recomiendo yo) variables tipo tabla, ya que estas te permiten mas comodidad a la hora de trabajar los resultados. En base a mi experiencia la mayoría de veces que me encuentro con un problema de estos lo resuelvo con tablas temporales.

Saludos.

Former Member
0 Kudos

Gracias Alexander voy a probar con las tablas virtules a que con el sub-select me da error y me indica que hay mas de un resultado.

Te agradezco tu ayuda.

Saludos

Answers (0)