Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- USE [PRIARABLAU];
- GO
- /****** Object: StoredProcedure [dbo].[P_DA_VendasPorAno_VS_AnoAnterior] Script Date: 05/05/2020 12:24:28 ******/
- SET ANSI_NULLS ON;
- GO
- SET QUOTED_IDENTIFIER ON;
- GO
- ALTER PROCEDURE [dbo].[P_DA_VendasPorAno_VS_AnoAnterior]
- -- Add the parameters for the stored procedure here
- @Cliente NVARCHAR(15) = NULL,
- @DataInicio DATE = NULL,
- @DataFim DATE = NULL,
- @TipoDocumentos NVARCHAR(15) = NULL,
- @Valencia NVARCHAR(50) = NULL
- AS
- BEGIN
- DECLARE @Clientes AS NVARCHAR(MAX);
- DECLARE @Helper AS NVARCHAR(MAX);
- DECLARE CursorEntidadesAssociadas CURSOR
- FOR SELECT EntidadeAssociada
- FROM EntidadesAssociadas WITH(NOLOCK)
- WHERE TipoEntidade = 'C'
- AND TipoEntidadeAssociada = 'C'
- AND Entidade = @Cliente;
- SET @Clientes = CONCAT(@Clientes, CONCAT(@Cliente, ','));
- IF
- (
- SELECT COUNT(EntidadeAssociada)
- FROM EntidadesAssociadas WITH(NOLOCK)
- WHERE TipoEntidade = 'C'
- AND TipoEntidadeAssociada = 'C'
- AND Entidade = @Cliente
- ) > 0
- BEGIN
- OPEN CursorEntidadesAssociadas;
- FETCH NEXT FROM CursorEntidadesAssociadas INTO @Helper;
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @Clientes = CONCAT(@Clientes, CONCAT(@Helper, ','));
- FETCH NEXT FROM CursorEntidadesAssociadas INTO @Helper;
- END;
- CLOSE CursorEntidadesAssociadas;
- DEALLOCATE CursorEntidadesAssociadas;
- END;
- SET @Clientes = LEFT(@Clientes, LEN(@Clientes) - 1);
- -- SET NOCOUNT ON added to prevent extra result sets from
- -- interfering with SELECT statements.
- SET NOCOUNT ON;
- -- Insert statements for procedure here
- IF @Valencia = 'Artigo'
- BEGIN
- SELECT vdal.Ano,
- V1.Cliente,
- V1.Nome,
- V1.TipoDocumento,
- V1.TipoDocumentoDescricao,
- V1.CodigoValencia,
- V1.DescricaoValencia,
- V1.SomaQuantidade_AnoN,
- V1.SomaPreco_AnoN,
- V2.SomaQuantidade_Anterior,
- V2.SomaPreco_Anterior,
- V2.AnoN_Anterior AS AnoAnterior
- FROM dbo.V_DA_ANOS_LOGISTICA AS vdal WITH(NOLOCK)
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN,
- vdvpa.Artigo AS CodigoValencia,
- vdvpa.ArtigoDescricao AS DescricaoValencia,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_AnoN,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_AnoN,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- FROM dbo.V_DA_VendasPorAno_Artigo AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Artigo,
- vdvpa.ArtigoDescricao,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- ) V1 ON V1.AnoN = vdal.Ano
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN_Anterior,
- vdvpa.Artigo,
- vdvpa.ArtigoDescricao,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_Anterior,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_Anterior
- FROM dbo.V_DA_VendasPorAno_Artigo AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Artigo,
- vdvpa.ArtigoDescricao
- ) V2 ON V2.AnoN_Anterior = vdal.Ano - 1
- AND V2.artigo = V1.CodigoValencia
- WHERE V1.Cliente IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@Clientes, ',')
- )
- AND V1.TipoDocumento IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@TipoDocumentos, ',')
- )
- AND ((@DataInicio IS NULL
- OR @DataFim IS NULL)
- OR (vdal.Ano BETWEEN YEAR(@DataInicio) AND YEAR(@DataFim)));
- END;
- ELSE
- IF @Valencia = 'Familia'
- BEGIN
- SELECT vdal.Ano,
- V1.Cliente,
- V1.Nome,
- V1.TipoDocumento,
- V1.TipoDocumentoDescricao,
- V1.CodigoValencia,
- V1.DescricaoValencia,
- V1.SomaQuantidade_AnoN,
- V1.SomaPreco_AnoN,
- V2.SomaQuantidade_Anterior,
- V2.SomaPreco_Anterior,
- V2.AnoN_Anterior AS AnoAnterior
- FROM dbo.V_DA_ANOS_LOGISTICA AS vdal WITH(NOLOCK)
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN,
- vdvpa.Familia AS CodigoValencia,
- vdvpa.FamiliaDescricao AS DescricaoValencia,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_AnoN,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_AnoN,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- FROM dbo.V_DA_VendasPorAno_Familia AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Familia,
- vdvpa.FamiliaDescricao,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- ) V1 ON V1.AnoN = vdal.Ano
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN_Anterior,
- vdvpa.Familia,
- vdvpa.FamiliaDescricao,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_Anterior,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_Anterior
- FROM dbo.V_DA_VendasPorAno_Familia AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Familia,
- vdvpa.FamiliaDescricao
- ) V2 ON V2.AnoN_Anterior = vdal.Ano - 1
- AND V2.Familia = V1.CodigoValencia
- WHERE V1.Cliente IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@Clientes, ',')
- )
- AND V1.TipoDocumento IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@TipoDocumentos, ',')
- )
- AND ((@DataInicio IS NULL
- OR @DataFim IS NULL)
- OR (vdal.Ano BETWEEN YEAR(@DataInicio) AND YEAR(@DataFim)));
- END;
- ELSE
- IF @Valencia = 'Marca'
- BEGIN
- SELECT vdal.Ano,
- V1.Cliente,
- V1.Nome,
- V1.TipoDocumento,
- V1.TipoDocumentoDescricao,
- V1.CodigoValencia,
- V1.DescricaoValencia,
- V1.SomaQuantidade_AnoN,
- V1.SomaPreco_AnoN,
- V2.SomaQuantidade_Anterior,
- V2.SomaPreco_Anterior,
- V2.AnoN_Anterior AS AnoAnterior
- FROM dbo.V_DA_ANOS_LOGISTICA AS vdal WITH(NOLOCK)
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN,
- vdvpa.Marca AS CodigoValencia,
- vdvpa.MarcaDescricao AS DescricaoValencia,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_AnoN,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_AnoN,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- FROM dbo.V_DA_VendasPorAno_Marca AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Marca,
- vdvpa.MarcaDescricao,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- ) V1 ON V1.AnoN = vdal.Ano
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN_Anterior,
- vdvpa.Marca,
- vdvpa.MarcaDescricao,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_Anterior,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_Anterior
- FROM dbo.V_DA_VendasPorAno_Marca AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Marca,
- vdvpa.MarcaDescricao
- ) V2 ON V2.AnoN_Anterior = vdal.Ano - 1
- AND V2.Marca = V1.CodigoValencia
- WHERE V1.Cliente IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@Clientes, ',')
- )
- AND V1.TipoDocumento IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@TipoDocumentos, ',')
- )
- AND ((@DataInicio IS NULL
- OR @DataFim IS NULL)
- OR (vdal.Ano BETWEEN YEAR(@DataInicio) AND YEAR(@DataFim)));
- END;
- ELSE
- IF @Valencia = 'Zona'
- BEGIN
- SELECT vdal.Ano,
- V1.Cliente,
- V1.Nome,
- V1.TipoDocumento,
- V1.TipoDocumentoDescricao,
- V1.CodigoValencia,
- V1.DescricaoValencia,
- V1.SomaQuantidade_AnoN,
- V1.SomaPreco_AnoN,
- V2.SomaQuantidade_Anterior,
- V2.SomaPreco_Anterior,
- V2.AnoN_Anterior AS AnoAnterior
- FROM dbo.V_DA_ANOS_LOGISTICA AS vdal WITH(NOLOCK)
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN,
- vdvpa.Zona AS CodigoValencia,
- vdvpa.ZonaDescricao AS DescricaoValencia,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_AnoN,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_AnoN,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- FROM dbo.V_DA_VendasPorAno_Zona AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Zona,
- vdvpa.ZonaDescricao,
- vdvpa.Cliente,
- vdvpa.Nome,
- vdvpa.TipoDocumento,
- vdvpa.TipoDocumentoDescricao
- ) V1 ON V1.AnoN = vdal.Ano
- LEFT JOIN
- (
- SELECT vdvpa.Ano AS AnoN_Anterior,
- vdvpa.Zona,
- vdvpa.ZonaDescricao,
- SUM(ISNULL(vdvpa.Quantidade, 0)) SomaQuantidade_Anterior,
- SUM(ISNULL(vdvpa.PrecoTotal, 0)) SomaPreco_Anterior
- FROM dbo.V_DA_VendasPorAno_Zona AS vdvpa WITH(NOLOCK)
- GROUP BY vdvpa.Ano,
- vdvpa.Zona,
- vdvpa.ZonaDescricao
- ) V2 ON V2.AnoN_Anterior = vdal.Ano - 1
- AND V2.Zona = V1.CodigoValencia
- WHERE V1.Cliente IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@Clientes, ',')
- )
- AND V1.TipoDocumento IN
- (
- SELECT VALUE
- FROM STRING_SPLIT(@TipoDocumentos, ',')
- )
- AND ((@DataInicio IS NULL
- OR @DataFim IS NULL)
- OR (vdal.Ano BETWEEN YEAR(@DataInicio) AND YEAR(@DataFim)));
- END;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement