Estimados;
Junto con saludar a quien este leyendo este post, favor si me podrian ayudar con lo siguiente:
La query que tengo es la siguiente:
SELECT DISTINCT
CASE
WHEN T4.[FatherNum] = '50000100' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50100000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50101000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50103000 ' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50102000 ' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50104000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50105000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50106000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50107000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50109000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50111000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50200000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '60101000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '10105000' THEN 'Stock'
WHEN T4.[FatherNum] = '10106000' THEN 'Stock'
WHEN T4.[FatherNum] = '20106000' THEN 'Stock'
WHEN T4.[FatherNum] = '10201000' THEN 'Activo'
WHEN T4.[FatherNum] = '10202000' THEN 'Activo'
WHEN T4.[FatherNum] = '10203000' THEN 'Activo'
END AS ' Nombre de cuenta mayor',
T4.[AcctName],
CASE
WHEN T3.[OcrCode] = 'LNE' THEN 'La Negra'
WHEN T3.[OcrCode] = 'STG' THEN 'Santiago'
WHEN T3.[OcrCode] = 'IQQ' THEN 'Iquique'
WHEN T3.[OcrCode] = 'COQ' THEN 'Coquimbo'
WHEN T3.[OcrCode] = 'DGS' THEN 'Gasto general'
WHEN T3.[OcrCode] = 'COP' THEN 'Copiapo'
WHEN T3.[OcrCode] = 'ANT' THEN 'Antofagasta'
WHEN T3.[OCRCODE] = 'B01' THEN 'No usar B01'
WHEN T3.[OCRCODE] = 'B09' THEN 'No usar B09'
END AS 'Sucursal',
Sum((T3.LineTotal*1.19)) AS 'Total Pagado'
FROM OVPM T0
INNER JOIN VPM2 T1 ON T0.[DocNum] = T1.[DocNum]
INNER JOIN OPCH T2 ON T1.[DocEntry] = T2.[DocEntry]
INNER JOIN PCH1 T3 ON T2.[DocEntry] = T3.[DocEntry]
INNER JOIN OACT T4 ON T3.[AcctCode] = T4.[AcctCode]
WHERE T0.[DocDate] >= [%0] AND T0.[DocDate] <= [%1]
GROUP BY T4.[FatherNum], T3.[OcrCode], T4.[AcctName]
ORDER BY 'Sucursal'
Me solicitaron crear una query que me agrupe todos los pagos a proveedores segun estas 3 categorias de cuenta (personalizada): Gasto directo, stock/inventario y activos. Especificando a la sucursal que corresponden y la sumatoria del total pagado dentro de un rango de fecha (consultable)
Los operadores de SAP imputan la cuenta en la factura de proveedores, cuyas cuentas son nivel 5-6, las cuales utlizo para obtener su ‘FatherNum’ (Cuenta mayor) y segun el nombre de estas, las categorizo manualmente en una de las 3 cuentas que mencione anteriormente. El problema es que no las puedo agrupar del todo:
Mi ideal seria:
Gasto Directo - Sucursal 1 - Total pagado
Stock - Sucursal 1 - Total Pagado
Activo - Sucursal 1 - Total pagado
Gasto Directo - Sucursal 2 - Total pagado
Stock - Sucursal 2 - Total Pagado
Activo - Sucursal 2 - Total pagado
y asi sucesivamente…
De antemano, gracias. Espero haberme explicado bien
Disculpa, tienes razon… de momento lo tenia así para ir puliendo los case segun el nombre de la cuenta, de todas formas, ya habia probado haciendo lo que me indicas y me sale lo siguiente:
Y la verdad es que me imagino porque… simplemente estoy reemplazando el nombre de la cuenta mayor por el que yo indico en la query, visualmente se ven iguales pero el valor de la cuenta es distinto… pero si no es asi, aun no encuentro la forma de hacerlo.
Inténtalo de la siguiente forma, cambie un poco las relaciones
SELECT
A0.[Nombre de cuenta mayor]
,A0.[Sucursal]
,SUM(A0.[Total Pagado]) [Total Pagado]
FROM
(
SELECT
CASE
WHEN T4.[FatherNum] = '50000100' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50100000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50101000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50103000 ' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50102000 ' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50104000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50105000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50106000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50107000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50109000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50111000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '50200000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '60101000' THEN 'Gasto Directo'
WHEN T4.[FatherNum] = '10105000' THEN 'Stock'
WHEN T4.[FatherNum] = '10106000' THEN 'Stock'
WHEN T4.[FatherNum] = '20106000' THEN 'Stock'
WHEN T4.[FatherNum] = '10201000' THEN 'Activo'
WHEN T4.[FatherNum] = '10202000' THEN 'Activo'
WHEN T4.[FatherNum] = '10203000' THEN 'Activo'
END AS [Nombre de cuenta mayor],
T4.[AcctName],
CASE
WHEN T3.[OcrCode] = 'LNE' THEN 'La Negra'
WHEN T3.[OcrCode] = 'STG' THEN 'Santiago'
WHEN T3.[OcrCode] = 'IQQ' THEN 'Iquique'
WHEN T3.[OcrCode] = 'COQ' THEN 'Coquimbo'
WHEN T3.[OcrCode] = 'DGS' THEN 'Gasto general'
WHEN T3.[OcrCode] = 'COP' THEN 'Copiapo'
WHEN T3.[OcrCode] = 'ANT' THEN 'Antofagasta'
WHEN T3.[OCRCODE] = 'B01' THEN 'No usar B01'
WHEN T3.[OCRCODE] = 'B09' THEN 'No usar B09'
END AS [Sucursal],
(T3.LineTotal*1.19) AS [Total Pagado]
FROM OVPM T0
INNER JOIN VPM2 T1 ON T0.[DocEntry] = T1.[DocNum]
INNER JOIN OPCH T2 ON T1.[DocEntry] = T2.[DocEntry] AND T1.InvType = T2.ObjType
INNER JOIN PCH1 T3 ON T2.[DocEntry] = T3.[DocEntry]
INNER JOIN OACT T4 ON T3.[AcctCode] = T4.[AcctCode]
WHERE T0.[DocDate] >= [%0] AND T0.[DocDate] <= [%1]
) A0
GROUP BY
A0.[Nombre de cuenta mayor]
,A0.[Sucursal]
ORDER BY
A0.[Sucursal]
Muchas gracias estimado!
Estoy tratando de entender el efecto que tuvo este cambio
INNER JOIN OPCH T2 ON T1.[DocEntry] = T2.[DocEntry] AND T1.InvType = T2.ObjType
Pero efectivamente me entregaste la solución. Gracias de nuevo