on 06-05-2013 5:11 PM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
107 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.