Ventas Total por Cliente por MES

Buenas tardes
me gustaría que me ayudaran en una consulta que esto realizando el cual se muestre el total de ventas por cliente al mes restando los impuestos y las notas de créditos. A demás me muestre el tipo de cliente ya sea PRIVADA, GOBIERNO, EXTERIOR ETC. y al final muestre el total acumulado de todos los meses
mas o menos este el formato.

cod cli, ncliente Tipo Ene, febrero, marzo abril mayo junio julio agos setp oct nov dic Total
0000 PP Gob 5 5 5 5 5 5 5 5 5 5 5 5 60
0001 MM Priv 4 4 4 4 4 4 4 4 4 4 4 4 48

Esta es la consulta que hecho pero la misma no me esta filtrando por el tipo de gobierno ni me esta restado el impuesto ni las notas de creditos. a continuacion le muestro la consulta.

declare  @fecha  AS  DATETIME      
declare  @fecha1  AS  DATETIME 
declare  @tipo  AS   nVarChar
 set @fecha = /* T.DocDate */ '[%0]'
 set @fecha = /* T.DocDate */ '[%1]'
 set @tipo = /* t1.groupname */ '[%3]'
SELECT T0.[CardCode],T0.[CardName],T1.GroupName,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 1 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Enero', 
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum)  FROM OINV T WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 2 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode] ),0)'Febrero',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 3 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Marzo',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum)  FROM OINV T WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 4 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Abril',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T  WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 5 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Mayo',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T  WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 6 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Junio',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 7 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Julio',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T  WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 8 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Agosto',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T  WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 9 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode]= T0.[CardCode]),0)'Septiembre',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T  WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 10 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Octubre',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T   WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND  MONTH(T.DocDate) = 11 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode] = T0.[CardCode]),0)'Noviembre',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T   WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND MONTH(T.DocDate) = 12 AND YEAR(T.DocDate)=YEAR(@fecha) AND T.[CardCode]= T0.[CardCode]),0)'Diciembre',
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T   WHERE T.[DocDate] >=[%0] AND  T.[DocDate] <=[%1] AND YEAR(@fecha)=2020 AND T.[CardCode] = T0.[CardCode] ),0)'Acumulado 2020'
FROM OCRD T0 INNER JOIN OINV T ON T0.[CardCode] = T.[CardCode] INNER JOIN ORIN T2 ON T0.[CardCode] = T2.[CardCode] INNER JOIN OCRG T1 ON T0.[GroupCode] = T1.[GroupCode] 
GROUP BY  T0.[CardCode],T0.[CardName], T2.[CardCode],T1.GroupName ORDER BY T0.[CardCode],T0.[CardName]

image

Les ruego me puedan ayudar ya que soy nuevo en mundo de sap y no soy muy experto en esto.

SIn mas por el momento gracias.

1 me gusta

@ppierce, por favor lee: Cómo usar el foro de Consultoria-SAP
Ahora he editado todo el debate, pero procura publicar correctamente en próximas oportunidades, fijate que el código SQL debe estar correctamente formateado.)

Muchas gracias por su Corrección es primera vez que utilizo el Foro. Usted me podria orientar en la ayuda que estoy solicitando.

Saludos

Hola @ppierce tengo una duda, por que no utilizar el informe de análisis de ventas, que trae SAP, este lo puedes generar por empleado mes a mes, y te trae la información que necesitas, tal cual lo estas requiriendo.

1 me gusta

Hola @Ricardo es correcto lo que dices pero lo que se quiere es tener el reporte mes a mes pero que vaya acumulado las ventas por cliente por el ejemple que el la ventas del mes de enero se le sumen las ventas del mes de febrero y así ir acumulando las ventas por clientes. por si se hacer como me comentas se debe pasar a una hoja Excel y realizar los cálculos. Se desea como la imagen que poste en el caso

Tengo de hobby hacer consultas SQL, y justo leo tu tema en fin de semana, asi que ahi te paso una opción usando PIVOT que es una función que me encanta para transponer datos,

WITH TR as
(
select * from
(
select T0.CardCode, Month(T0.DocDate) as 'Mes', (T0.DocTotal-T0.Vatsum) as 'TotVta'
FROM OINV T0 WHERE T0.CANCELED = 'N' and T0.DocDate between '20190101' and '20191231'
Union all
select T1.CardCode, Month(T1.DocDate) as 'Mes', ((T1.DocTotal-T1.Vatsum)*-1) as 'TotVta'
FROM ORIN T1 WHERE T1.CANCELED = 'N' and T1.DocDate between '20190101' and '20191231'
) as TP
PIVOT (SUM(TP.TotVta) FOR TP.Mes IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) pvrt

) 
select TG.GroupName,TC.CardCode,TC.CardName, 
ISNULL([1],0) as 'Enero', ISNULL([2],0) as 'Febrero', ISNULL([3],0) as 'Marzo', ISNULL([4],0) as 'Abril',
ISNULL([5],0) as 'Mayo', ISNULL([6],0) as 'Junio', ISNULL([7],0) as 'Julio', ISNULL([8],0) as 'Agosto',
ISNULL([9],0) as 'Septiembre', ISNULL([10],0) as 'Octubre', ISNULL([11],0) as 'Noviembre', ISNULL([12],0) as 'Diciembre',
(ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+
ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0)+ISNULL([11],0)+ISNULL([12],0)) as 'Total'

from TR
inner join OCRD TC on TC.CardCode = TR.CardCode
inner join OCRG TG on TC.GroupCode = TG.GroupCode

Estoy asumiendo que sacas estos reporte por gestion, puedes acomodar mejor el tema de parametros.

Espero te sirva :wink:

1 me gusta

@Willy_Caldero
Gracias por tu ayuda ya que soy nuevo en esto del mundo del sap. he estado tratando de acomodar lo parámetro para filtar por un rango de fecha pero me esta dando error. estos es filtro que deseo hacer.

T1.[GroupName] =[%0] AND T.[DocDate] >=[%3] AND T.[DocDate] <=[%4]

si me podrias ayudar con esto te lo agradeceria mucho
En espera de tu pronta respuesta

@Willy_Caldero
Buenos días
te agradezco por la ayuda en que me diste con o la consulta pero no he podido hacer que filtre por rango de fecha y por tipo de empresa como te lo comente en mensaje anterior. Te agradecería me pudieras ayudar o decirme si se puede hacer o no te digo esto porque soy nuevo en el mundo se SAP y sobre todo SQL y estoy haciendo mis primero pinitos en estos sistema. La consulta que yo hice me filtra tanto por rango de fecha como por por grupo de compañía. Pero no he podido hacer que me reste la notas de Crédito. Te envió mi consulta que la mires y me des un consejo. o de como puedo filtrar por fechas y por grupo de compañía ne la consulta que usted realizo.

Esta es mi consulta espero me puedas orientar.
Saludos

Resumen

SELECT T0.[CardCode],T0.[CardName],T1.[GroupName],

ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 1 AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Enero’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 2 AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Febrero’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 3 AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Marzo’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 4 AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Abril’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 5 AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Mayo’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 6 AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Junio’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 7 AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Julio’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 8 AND YEAR(T.DocDate)=YEAR(T.DocDate) AND T.[CardCode] = T0.[CardCode]),0)‘Agosto’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 9 AND YEAR(T.DocDate)=YEAR(T.DocDate) AND T.[CardCode] = T0.[CardCode]),0)‘Septiembre’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 10 AND YEAR(T.DocDate)=YEAR(T.DocDate) AND T.[CardCode] = T0.[CardCode]),0)‘Octubre’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 11 AND YEAR(T.DocDate)=YEAR(T.DocDate) AND T.[CardCode] = T0.[CardCode]),0)‘Noviembre’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND MONTH(T.DocDate) = 12 AND YEAR(T.DocDate)=YEAR(T.DocDate) AND T.[CardCode] = T0.[CardCode]),0)‘Diciembre’,
ISNULL((SELECT SUM(T.DocTotal-T.Vatsum) FROM OINV T WHERE T.[DocDate] >=[%3] AND T.[DocDate] <=[%4] AND YEAR(T.DocDate)=2020 AND T.[CardCode] = T0.[CardCode]),0)‘Acumulado 2020’
FROM OCRD T0 INNER JOIN OINV T ON T0.[CardCode] = T.[CardCode] INNER JOIN OCRG T1 ON T0.[GroupCode] = T1.[GroupCode] WHERE T1.[GroupName] =[%0] AND T.[DocDate] >=[%3] AND T.[DocDate] <=[%4]
GROUP BY T0.[CardCode],T0.[CardName],T1.[GroupName] ORDER BY T0.[CardCode],T0.[CardName]

recién que entro al foro, estaba ocupado con un proyecto, lo de los parámetros, lo mejor es tomarlos primero en variables, de este estilo (esto al principio de de tu consulta):

  /* SELECT FROM [dbo].[OCRG] T0 */                          
  DECLARE @gname AS VARCHAR(30)                            
  /* WHERE */                                                
  SET @gname = /* T0.GroupName */'[%0]'

cargas el date de la misma manera, tanto para tu fecha inicio, como para la fecha fin:

  /* SELECT FROM [dbo].[OINV] T0 */                          
  DECLARE @fechainicio AS DATE                            
  /* WHERE */                                                
  SET @fechainicio = /* T0.DocDate */'[%1]'

una vez tienes estas variables creadas las usas en tu query
Para usar esos filtros en la consulta que te pase, habría que modificar la subconsulta que genera los datos:

WITH TR as
(
select * from
(
select T0.CardCode, Month(T0.DocDate) as 'Mes', (T0.DocTotal-T0.Vatsum) as 'TotVta'
FROM OINV T0 
    INNER JOIN OCRG T0G on T0G.GroupCode = T0.GroupCode and T0G.GroupName = @gname
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
Union all
select T1.CardCode, Month(T1.DocDate) as 'Mes', ((T1.DocTotal-T1.Vatsum)*-1) as 'TotVta'
FROM ORIN T1 
NNER JOIN OCRG T1G on T1G.GroupCode = T1.GroupCode and T1G.GroupName = @gname
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin
) as TP
PIVOT (SUM(TP.TotVta) FOR TP.Mes IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) pvrt

) 
select TG.GroupName,TC.CardCode,TC.CardName, 
ISNULL([1],0) as 'Enero', ISNULL([2],0) as 'Febrero', ISNULL([3],0) as 'Marzo', ISNULL([4],0) as 'Abril',
ISNULL([5],0) as 'Mayo', ISNULL([6],0) as 'Junio', ISNULL([7],0) as 'Julio', ISNULL([8],0) as 'Agosto',
ISNULL([9],0) as 'Septiembre', ISNULL([10],0) as 'Octubre', ISNULL([11],0) as 'Noviembre', ISNULL([12],0) as 'Diciembre',
(ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+
ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0)+ISNULL([11],0)+ISNULL([12],0)) as 'Total'

from TR
inner join OCRD TC on TC.CardCode = TR.CardCode
inner join OCRG TG on TC.GroupCode = TG.GroupCode
1 me gusta

@Willy_Caldero

Hola como estas gracias por la explicación realice los paso como me lo proppusite enla consulta pero me esta enviando un error de Syntaxis en el inner Join que lo he rebisado de arriba hacia abajo y no encuentro porque el error. Me pdorias decir que lo que estoy haciendo mal para que me este dando este error

Te envió la consulta modificada.

@Willy_Caldero

DECLARE @fechainicio AS DATE     
 /* SELECT T0.DocDate FROM [dbo].[OINV] T5
  WHERE                                                
  SET @fechainicio = /* T5.DocDate */'[%1]'*/
 
 DECLARE @fechafin AS DATE     
 /* SELECT T6.DocDate FROM [dbo].[OINV] T6
  WHERE                                               
  SET @fechafin = /* T6.DocDate */'[%2]'*/

DECLARE @gname AS VARCHAR(30)  
/* SELECT T7.GroupName  FROM [dbo].[OCRG] T7                  
  WHERE                                              
  SET @gname = /* T7.GroupName */'[%0]*/

WITH TR as
(
select * from
(
select T0.CardCode, Month(T0.DocDate) as 'Mes', (T0.DocTotal-T0.Vatsum) as 'TotVta'
FROM OINV T0 INNER JOIN OCRD T1 on T0.[CardCode] = T1.[CardCode] INNER JOIN OCRG T2 ON T1.[GroupCode] = T2.[GroupCode] and T2.GroupName = @gname
WHERE T0.CANCELED = 'N' and T0.DocDate >= @fechainicio  and T0.DocDate <= @fechafin
Union all
select T8.CardCode, Month(T8.DocDate) as 'Mes', ((T8.DocTotal-T8.Vatsum)*-1) as 'TotVta'
FROM ORIN T8  INNER JOIN OCRD T3 on T8.[CardCode] = T3.[CardCode] INNER JOIN OCRG T4 ON T3.[GroupCode] = T4.[GroupCode]  and T4.GroupName = @gname
WHERE T1.CANCELED = 'N' and T8.DocDate >= @fechainicio  and T8.DocDate <= @fechafin
) as TP
PIVOT (SUM(TP.TotVta) FOR TP.Mes IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) pvrt

) 
select TG.GroupName,TC.CardCode,TC.CardName, 
ISNULL([1],0) as 'Enero', ISNULL([2],0) as 'Febrero', ISNULL([3],0) as 'Marzo', ISNULL([4],0) as 'Abril',
ISNULL([5],0) as 'Mayo', ISNULL([6],0) as 'Junio', ISNULL([7],0) as 'Julio', ISNULL([8],0) as 'Agosto',
ISNULL([9],0) as 'Septiembre', ISNULL([10],0) as 'Octubre', ISNULL([11],0) as 'Noviembre', ISNULL([12],0) as 'Diciembre',
(ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+
ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0)+ISNULL([11],0)+ISNULL([12],0)) as 'Total'


inner join OCRD TC on TC.CardCode = TR.CardCode 
inner join OCRG TG on TC.GroupCode = TG.GroupCode
from TR

Le cambiaste el formato, ya lo ajuste, este query me funciona:

/* SELECT FROM [dbo].[OCRG] T0 */                          
  DECLARE @gname AS VARCHAR(30)                            
  /* WHERE */                                                
  SET @gname = /* T0.GroupName */'[%0]'

/* SELECT FROM [dbo].[OINV] T1 */                          
  DECLARE @fechainicio AS DATE                            
  /* WHERE */                                                
  SET @fechainicio = /* T1.DocDate */'[%1]'

/* SELECT FROM [dbo].[OINV] T2 */                          
  DECLARE @fechafin AS DATE                            
  /* WHERE */                                                
  SET @fechafin = /* T2.DocDate */'[%2]'

;WITH TR as
(
select * from
(
select T0.CardCode, Month(T0.DocDate) as 'Mes', (T0.DocTotal-T0.Vatsum) as 'TotVta'
FROM OINV T0 
    INNER JOIN OCRD T0C on T0C.CardCode = T0.CardCode
    INNER JOIN OCRG T0G on T0G.GroupCode = T0C.GroupCode and T0G.GroupName = @gname
WHERE T0.CANCELED = 'N' and T0.DocDate between @fechainicio and @fechafin
Union all
select T1.CardCode, Month(T1.DocDate) as 'Mes', ((T1.DocTotal-T1.Vatsum)*-1) as 'TotVta'
FROM ORIN T1 
INNER JOIN OCRD T1C on T1C.CardCode = T1.CardCode
INNER JOIN OCRG T1G on T1G.GroupCode = T1C.GroupCode and T1G.GroupName = @gname
WHERE T1.CANCELED = 'N' and T1.DocDate between @fechainicio and @fechafin
) as TP
PIVOT (SUM(TP.TotVta) FOR TP.Mes IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) pvrt

) 
select TG.GroupName,TC.CardCode,TC.CardName, 
ISNULL([1],0) as 'Enero', ISNULL([2],0) as 'Febrero', ISNULL([3],0) as 'Marzo', ISNULL([4],0) as 'Abril',
ISNULL([5],0) as 'Mayo', ISNULL([6],0) as 'Junio', ISNULL([7],0) as 'Julio', ISNULL([8],0) as 'Agosto',
ISNULL([9],0) as 'Septiembre', ISNULL([10],0) as 'Octubre', ISNULL([11],0) as 'Noviembre', ISNULL([12],0) as 'Diciembre',
(ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+
ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0)+ISNULL([11],0)+ISNULL([12],0)) as 'Total'

from TR
inner join OCRD TC on TC.CardCode = TR.CardCode
inner join OCRG TG on TC.GroupCode = TG.GroupCode
1 me gusta

@Willy_Caldero
Hola Willy disculpa pero cuando ejecuto este ultimo query que me envías me envía el siguiente error como te lo muestro el la imagen siguiente

image

el erro dice lo siguiente: "incorret syntar near ther keyword ‘FROM’

@willy_caldero

Hola Willy muchas gracias por la ayuda que me brindaste ya la consulta corrió sin ningún tipo de problemas . Agradecido un monto y he aprendido todo lo que me dijiste que hiciera

Saludos cordiales y un abrazo desde Panamá

Gracias me explicar como puedo evaluarte para que obtengas puntos

Con la marca como solución, y el like es suficiente :wink:

@willy_caldero
Buenos días
Ing Willi usted tendrá algún query donde se compare los periodos de ventas o un año vs el año actual, mes actual contra mes anterior. O si es tan amable de explicarme

sin mas por el momento.

Saludos

en realidad es muy similar al que te pase por mes, solo habria que cambiar la funcion “Month” por “Year”, y claro en el pivot colocar manualmente los años que se van a tomar, hay forma de hacerlo dinamico, pero para no complicarla mucho, mejor poner manualmente los años que vas a analizar.

@willy_Caldero

Hola Esto es lo que se deve Modificar

PIVOT (SUM(TP.TotVta) FOR TP.Mes IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) pvrt

) 
select TC.CardCode,TC.CardName,TG.GroupName, 
ISNULL([1],0) as 'Enero', ISNULL([2],0) as 'Febrero', ISNULL([3],0) as 'Marzo', ISNULL([4],0) as 'Abril',
ISNULL([5],0) as 'Mayo', ISNULL([6],0) as 'Junio', ISNULL([7],0) as 'Julio', ISNULL([8],0) as 'Agosto',
ISNULL([9],0) as 'Septiembre', ISNULL([10],0) as 'Octubre', ISNULL([11],0) as 'Noviembre', ISNULL([12],0) as 'Diciembre',
(ISNULL([1],0)+ISNULL([2],0)+ISNULL([3],0)+ISNULL([4],0)+ISNULL([5],0)+ISNULL([6],0)+
ISNULL([7],0)+ISNULL([8],0)+ISNULL([9],0)+ISNULL([10],0)+ISNULL([11],0)+ISNULL([12],0)) as 'Total'