Transcript
Page 1: Ventas Por Producto Pivot

1C:\Users\Jonathan Lucas\Desktop\Ventas por producto pivot.sql

USE [FH]

GO

--///ISC. JONATHAN LUCAS FLORES///

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[WEB_VENTAS_POR_PRODUCTO_PIEZAS_MONTO]

@PRODUCTO AS NVARCHAR(20),

@CANALDIS AS NVARCHAR(20),

@FECHAINI DATE,

@FECHAFIN DATE

AS

SET NOCOUNT ON;

DECLARE @sql nvarchar(MAX) = '';

DECLARE @columns_1 nvarchar(MAX) = '';

DECLARE @columns_2 nvarchar(MAX) = '';

SET @columns_1 = STUFF(

(

SELECT DISTINCT

',Piezas_Mes' + cast( MONTH(DocDate) as varchar) + '_año_' + cast( YEAR(DocDate) as varchar)

FROM

(SELECT DocDate FROM OINV where DocDate BETWEEN @FECHAINI AND @FECHAFIN) AS P

FOR XML PATH('')

), 1, 1, '');

SET @columns_2 = STUFF(

(

SELECT DISTINCT

',Monto_Mes' + cast( MONTH(DocDate) as varchar) + '_año_' + cast( YEAR(DocDate) as varchar)

FROM

(SELECT DocDate FROM OINV where DocDate BETWEEN @FECHAINI AND @FECHAFIN) AS P

FOR XML PATH('')

), 1, 1, '');

SET @sql = N'

select

Z.PRODUCTO,

Z.DESCRIPCION,

' + @columns_1 + ',' + @columns_2 + N'

from

(

select

*

FROM

(

SELECT

a.ItemCode AS PRODUCTO,

a.Dscription AS DESCRIPCION,

''Piezas_Mes'' + cast( MONTH(b.DocDate) as varchar) + ''_año_'' + cast( YEAR(b.DocDate)

as varchar) AS MES,

a.Quantity AS CANTIDAD

FROM INV1 AS a

INNER JOIN OINV AS b

ON a.DocEntry=b.DocEntry

INNER JOIN OCRD AS c ON b.CardCode = c.CardCode

WHERE b.DocType = ''I'' and (c.GroupCode = 100 OR c.GroupCode = 111) AND b.DocDate BETWEEN

''' + CAST( @FECHAINI AS VARCHAR) + ''' AND ''' + CAST( @FECHAFIN AS VARCHAR) + '''

UNION

SELECT

d.ItemCode AS PRODUCTO,

d.Dscription AS DESCRIPCION,

''Piezas_Mes'' + cast( MONTH(e.DocDate) as varchar) + ''_año_'' + cast( YEAR(e.DocDate)

as varchar) AS MES,

d.Quantity AS CANTIDAD

FROM RIN1 AS d

INNER JOIN ORIN AS e

ON d.DocEntry = e.DocEntry

INNER JOIN OCRD AS f ON e.CardCode = f.CardCode

WHERE e.DocType = ''I'' and (f.GroupCode = 100 OR f.GroupCode = 111) AND e.DocDate BETWEEN

''' + CAST (@FECHAINI AS VARCHAR) + ''' AND ''' + CAST( @FECHAFIN AS VARCHAR) + '''

) as TABLADATOS

Page 2: Ventas Por Producto Pivot

2C:\Users\Jonathan Lucas\Desktop\Ventas por producto pivot.sql

pivot

(

SUM(TABLADATOS.CANTIDAD) for TABLADATOS.MES IN(' + @columns_1 + N')

) as P

) as Z

inner join

(

select

*

from

(

SELECT

a.ItemCode AS PRODUCTO,

a.Dscription AS DESCRIPCION,

''Monto_Mes'' + cast( MONTH(b.DocDate) as varchar) + ''_año_'' + cast( YEAR(b.DocDate)

as varchar) AS MES,

a.LineTotal AS TOTAL

FROM INV1 AS a

INNER JOIN OINV AS b

ON a.DocEntry=b.DocEntry

INNER JOIN OCRD AS c ON b.CardCode = c.CardCode

WHERE b.DocType = ''I'' and (c.GroupCode = 100 OR c.GroupCode = 111) AND b.DocDate BETWEEN

''' + CAST( @FECHAINI AS VARCHAR) + ''' AND ''' + CAST( @FECHAFIN AS VARCHAR) + '''

UNION

SELECT

d.ItemCode AS PRODUCTO,

d.Dscription AS DESCRIPCION,

''Monto_Mes'' + cast( MONTH(e.DocDate) as varchar) + ''_año_'' + cast( YEAR(e.DocDate)

as varchar) AS MES,

d.LineTotal AS TOTAL

FROM RIN1 AS d

INNER JOIN ORIN AS e

ON d.DocEntry = e.DocEntry

INNER JOIN OCRD AS f ON e.CardCode = f.CardCode

WHERE e.DocType = ''I'' and (f.GroupCode = 100 OR f.GroupCode = 111) AND e.DocDate BETWEEN

''' + CAST( @FECHAINI AS VARCHAR) + ''' AND ''' + CAST( @FECHAFIN AS VARCHAR) + '''

) as TABLADATOS

pivot

(

SUM(TABLADATOS.TOTAL) for TABLADATOS.MES IN (' + @columns_2 + N')

) as P

) as Y

on Z.PRODUCTO = Y.PRODUCTO and Z.DESCRIPCION = Y.DESCRIPCION

order by

PRODUCTO,

DESCRIPCION;';

EXEC sp_executesql @sql;

GO


Top Related