none
SELECT COLUNA COM CRITÉRIO DE DATAS RRS feed

  • Pergunta

  • BOA TARDE,

    QUERO FAZER UM SELECT NO SQL QUE MOSTRA: 

    COLUNA1      COLUNA2        COLUNA3 
    DATA>2014      DATA>2015   DATA>2016 

     ALGUÉM SABE ?


    quarta-feira, 22 de fevereiro de 2017 17:24

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

    quinta-feira, 23 de fevereiro de 2017 17:12

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
    ----------------------------------------------------------

    quarta-feira, 22 de fevereiro de 2017 17:27
  • Deleted
    quarta-feira, 22 de fevereiro de 2017 18:00
  • 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
    quarta-feira, 22 de fevereiro de 2017 19:03
  • 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

    quinta-feira, 23 de fevereiro de 2017 17:12