Usuário com melhor resposta
SELECT COLUNA COM CRITÉRIO DE DATAS

Pergunta
-
Respostas
-
Veja esse exemplo : basicamente ele mostra como o operador PIVOT e aplicado
DECLARE @Dados TABLE ( Item VARCHAR(MAX), Data DATETIME DEFAULT(GETDATE()), valor DECIMAL(18,2) DEFAULT(10) ) DECLARE @TemV INT = 1 ; --Ano 2017 WHILE (@TemV <= 5) BEGIN INSERT INTO @Dados( Item, Data, valor ) VALUES ( CONCAT('Item-',@TemV), DEFAULT, DEFAULT ) SET @TemV =@TemV +1; END SET @TemV =1; --Ano 2016 WHILE (@TemV <= 5) BEGIN INSERT INTO @Dados( Item, Data, valor ) VALUES ( CONCAT('Item-',@TemV), DATEADD(YEAR,-1,GETDATE()), 20 ) SET @TemV =@TemV +1; END SET @TemV =1; --Ano 2015 WHILE (@TemV <= 5) BEGIN INSERT INTO @Dados( Item, Data, valor ) VALUES ( CONCAT('Item-',@TemV), DATEADD(YEAR,-2,GETDATE()), 30 ) SET @TemV =@TemV +1; END ;WITH DadosPivot AS ( SELECT D.Item , Ano = YEAR(D.Data), valor =SUM(D.valor) FROM @Dados AS D GROUP BY D.Item,YEAR(D.Data) ) SELECT P.* FROM DadosPivot PIVOT(SUM ( valor) FOR Ano IN ([2015],[2016],[2017])) P
Saudações,,,
Por favor, marque-o como respondidas se está respondeu a sua pergunta
ou marcá-lo como útil se está ajudou a resolver o seu problema
Wesley Neves
MTA-Database Fundamentals
Analista Desenvolvedor.NET
Wesley Neves
- Marcado como Resposta Robson William Silva segunda-feira, 27 de fevereiro de 2017 13:26
Todas as Respostas
-
Poderia ser mais claro? De um exemplo concreto e mostre qual seria a fonte de dados.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
-
Obrigado pelo feedback Wiliam e José Diz !
seria mais ou menos assim:
TABELA - DADOS
COLUNAS - DATA,VALOR,ITENS
QUERO MONTAR UM SELECT QUE AS COLUNAS FIQUE ASSIM:
Select ITENS,(SOMA DOS VALORES DO INICIO ATÉ 2014) AS COLUNA 1,
(SOMA DOS VALORES DO INICIO ATÉ 2015) AS COLUNA 2,
(.......DO INICIO ATÉ 2016) AS COLUNA 3 From DADOS
- Editado Sp_Roberto quarta-feira, 22 de fevereiro de 2017 19:16
-
Veja esse exemplo : basicamente ele mostra como o operador PIVOT e aplicado
DECLARE @Dados TABLE ( Item VARCHAR(MAX), Data DATETIME DEFAULT(GETDATE()), valor DECIMAL(18,2) DEFAULT(10) ) DECLARE @TemV INT = 1 ; --Ano 2017 WHILE (@TemV <= 5) BEGIN INSERT INTO @Dados( Item, Data, valor ) VALUES ( CONCAT('Item-',@TemV), DEFAULT, DEFAULT ) SET @TemV =@TemV +1; END SET @TemV =1; --Ano 2016 WHILE (@TemV <= 5) BEGIN INSERT INTO @Dados( Item, Data, valor ) VALUES ( CONCAT('Item-',@TemV), DATEADD(YEAR,-1,GETDATE()), 20 ) SET @TemV =@TemV +1; END SET @TemV =1; --Ano 2015 WHILE (@TemV <= 5) BEGIN INSERT INTO @Dados( Item, Data, valor ) VALUES ( CONCAT('Item-',@TemV), DATEADD(YEAR,-2,GETDATE()), 30 ) SET @TemV =@TemV +1; END ;WITH DadosPivot AS ( SELECT D.Item , Ano = YEAR(D.Data), valor =SUM(D.valor) FROM @Dados AS D GROUP BY D.Item,YEAR(D.Data) ) SELECT P.* FROM DadosPivot PIVOT(SUM ( valor) FOR Ano IN ([2015],[2016],[2017])) P
Saudações,,,
Por favor, marque-o como respondidas se está respondeu a sua pergunta
ou marcá-lo como útil se está ajudou a resolver o seu problema
Wesley Neves
MTA-Database Fundamentals
Analista Desenvolvedor.NET
Wesley Neves
- Marcado como Resposta Robson William Silva segunda-feira, 27 de fevereiro de 2017 13:26