Buen día a la comunidad de SAP Business One, este es el primer post que escribo.
El motivo es para compartirles un pequeño query para poder contar las facturas
generadas por año y por cada cliente. Todo esto surgió a partir de la pregunta
que nos hizo Alessandro López y me pareció muy interesante. Por ello quice
compartirles mi propuesta a esa pregunta.
-- DECLARACIÓN DE VARIABLES
DECLARE @Cad VARCHAR(MAX), @SQL NVARCHAR(MAX)
-- INICIALIZACIÓN DE VARIABLES
SET @Cad = ','
-- CONCATENAR AÑOS DE FACTURAS
SELECT @Cad = @Cad + ',[' + Años.Año + ']'
FROM (SELECT DISTINCT CONVERT(VARCHAR,YEAR(DocDate)) [Año] FROM OINV) [Años]
-- QUITAR COMAS AL PRINCIPIO
SELECT @Cad = REPLACE(@Cad,',,','')
-- CONSULTA GENERAL
SET @SQL= N'
SELECT * FROM
(
SELECT CardCode, CardName, YEAR(DocDate) [Año], DocEntry
FROM OINV
) [T0]
PIVOT (
COUNT(T0.DocEntry) FOR T0.[Año] IN (' + @Cad + ')
)AS [Count]
'
-- EJECUTAR SQL DINÁMICO
EXECUTE SP_EXECUTESQL @SQL
Como se pueden dar cuenta, utilizo SQL dinámico, esto para que nuestro pivote no sea
estático y tener que estar modificando la consulta cada que pasen los años. Desde luego,
la consulta se puede optimizar y también utilizar en algún otro documento, solo es cuestión
de cambiar las tablas.
Aquí el resultado:
Bueno, eso es todo y espero les sea de gran utilidad.
Saludos cordiales.
Carlos Ventura.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
5 | |
2 | |
2 | |
2 | |
2 | |
2 | |
1 | |
1 | |
1 |