on 09-24-2013 12:06 AM
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
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Buenas tardes
Prueba agregando un SUM(Y.GTotal) en las subquerys.
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 |
---|---|
99 | |
11 | |
11 | |
6 | |
6 | |
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.