Facturación cliente por meses

Buenas tardes,

Necesito realizar una consulta que me muestre: Codigo Cliente / Nombre Cliente / Facturación Enero / Facturación Febrero / Facturación Marzo … todos los meses.

¿Alguien me puede ayudar?

Gracias

Hola, esa consulta requiere buenos conocimientos de SQL, yo he usado una que me trae importes por mes usando PIVOT, pero tu requieres uno doble para controlar los meses y los clientes.
Te comparto la que he usado para que te des una idea.

select [ENE], [FEB]
from
(
select Sum(f.DocTotal) as ‘Venta’, case MONTH(f.docdate) when 1 then ‘ENE’ when 2 then ‘FEB’ end ‘Mes’
from oinv f
where f.DocDate >= ‘20220101’
group by f.CardCode, MONTH(f.DocDate)
) A
pivot
(
sum(A.Venta)
for A.Mes in ([ENE], [FEB])
) as PivotTable

Sugiero la ejecutes en una base de prueba para no afectar la productiva.
Saludos.

Primer filtro…
Has buscado en el foro…¿?
Hay multitud de temas con lo que pides y soluciones.

No he encontrado nada relacionado con este tipo de consulta, como comenta @mbarrera es algo compleja para un usuario final de SAP.

Aqui estoy:

SELECT T0.“CardCode”, T0.“CardName”, sum(T0.“DocTotal” -T0.“VatSum”) FROM OINV T0 WHERE T0.“DocDate” BETWEEN ‘[%0]’ AND ‘[%1]’ GROUP BY T0.“CardCode”, T0.“CardName”

Continuo realizando pruebas:

SELECT T0.“CardCode”, T0.“CardName”, sum(T0.“DocTotal” -T0.“VatSum”), CASE MONTH T0.“DocDate” WHEN ‘1’ THEN ‘Enero’ WHEN ‘2’ THEN ‘Febrero’ WHEN ‘3’ THEN ‘Marzo’ WHEN ‘4’ THEN ‘Abril’ WHEN ‘5’ THEN ‘Mayo’ WHEN ‘6’ THEN ‘Junio’ WHEN ‘7’ THEN ‘Julio’ WHEN ‘8’ THEN ‘Agosto’ WHEN ‘9’ THEN ‘Setiembre’ WHEN ‘10’ THEN ‘Octubre’ WHEN ‘11’ THEN ‘Noviembre’ WHEN ‘12’ THEN ‘Diciembre’ END AS “Mes” FROM OINV T0 WHERE T0.“DocDate” BETWEEN ‘[%0]’ AND ‘[%1]’ GROUP BY T0.“CardCode”, T0.“CardName”, T0.“DocDate”

Me da error :frowning:

Hola Ivan, revise tu consulta y la modifique para que corriera en mi base; te comparto la imagen de como quedo. No coloco el texto porque pienso que las comillas simples se cambian en este editor.

Hola @IvanFor ya llevas un tiempo por aquí… para formatear adecuadamente el texto de los mensajes… cuando pones un código sql se usa el preformateado…

Cuando estas escribiendo… justo encima aparecen una cantidad importante de iconos que cada uno tiene una función o labor…

He tecleado “ventas meses” en el cuadro de buscar y luego apretado la lupa de buscar
En los resultados
Primera entrada al buscar
Segunda entrada
Otra entrada similar
La famosa del PIVOT

Aquí te pego un código sql de alguna de esas…

declare @fechainicio datetime, @fechafin datetime 
set @fechainicio=(/*select top 1 A.DocDate from OINV A where A.DocDate=*/'[%0]')        
set @fechafin=(/*select top 1 A.DocDate from OINV A where A.DocDate=*/'[%1]')    

Select 

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=1)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=1))
 as 'Enero',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=2)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=2)
) as 'FEBRERO',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=3)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=3)
) as 'MARZO',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=4)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=4)
) as 'Abril',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=5)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=5)
) as 'Mayo',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=6)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=6)
) as 'Junio',


((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=7)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=7)
) as 'Julio',


((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=8)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=8)
) as 'Agosto',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=9)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=9)
) as 'Septiembre',


((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=10)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=10)
) as 'Octubre',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=11)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=11)
) as 'Noviembre',

((select SUM(T0.DocTotal-T0.Vatsum-T0.[TotalExpns])
FROM OINV T0 
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
AND Month(T0.DocDate) <=12)
+ 
(select  SUM((T1.DocTotal-T1.Vatsum-T1.[TotalExpns])*-1) 
 FROM ORIN T1 
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin 
AND Month(T1.DocDate) <=12)
) as 'Diciembre'
1 me gusta

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.