Torna al Thread

USE tempdb; CREATE TABLE dbo.Flussi( ID int IDENTITY(1,1) NOT NULL, Tipo char(1) NULL, Descrizione varchar(20) NULL, Mese int NULL, Importo decimal(5, 2) NULL ); INSERT dbo.Flussi VALUES ('C','Rimborso',2,200) , ('C','Rimborso',5,200) , ('C','Rimborso',3,100) , ('C','Rimborso',4,230) , ('C','Fattura passiva',1,100) , ('C','Fattura passiva',2,400) , ('C','Fattura passiva',5,200) , ('C','Fattura passiva',6,140) , ('C','Fattura passiva',4,90) , ('C','Personale',4,100) , ('C','Personale',1,120); WITH CTE_PIVOT AS ( SELECT P.Descrizione , [1], [2], [3], [4], [5], [6] , [7], [8], [9], [10], [11], [12] FROM dbo.Flussi AS F PIVOT ( MAX(Importo) FOR Mese IN( [1], [2], [3], [4], [5], [6] , [7], [8], [9], [10], [11], [12] ) ) AS P ) SELECT Descrizione , MAX(COALESCE([1], 0)) AS [1] , MAX(COALESCE([2], 0)) AS [2] , MAX(COALESCE([3], 0)) AS [3] , MAX(COALESCE([4], 0)) AS [4] , MAX(COALESCE([5], 0)) AS [5] , MAX(COALESCE([6], 0)) AS [6] , MAX(COALESCE([7], 0)) AS [7] , MAX(COALESCE([8], 0)) AS [8] , MAX(COALESCE([9], 0)) AS [9] , MAX(COALESCE([10], 0)) AS [10] , MAX(COALESCE([11], 0)) AS [11] , MAX(COALESCE([12], 0)) AS [12] FROM CTE_PIVOT GROUP BY Descrizione; /* Output: Descrizione 1 2 3 4 5 6 7 8 9 10 11 12 -------------------- ------- ------- ------- ------- ------- ------- ----- ----- ----- ----- ----- ----- Fattura passiva 100.00 400.00 0.00 90.00 200.00 140.00 0.00 0.00 0.00 0.00 0.00 0.00 Personale 120.00 0.00 0.00 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Rimborso 0.00 200.00 100.00 230.00 200.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 (3 row(s) affected) */ DROP TABLE dbo.Flussi;
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5