Torna al Thread

USE tempdb; CREATE TABLE dbo.persNNAppMovCtra( nnr_numcontr int NOT NULL, nnr_rinnid int NOT NULL, nnr_codart varchar(18) NOT NULL, pnr_codtchi smallint NULL); CREATE TABLE dbo.persContrattiXChiamate( nnr_numcontr int NOT NULL, nnr_rinnid int NOT NULL, nnr_codart varchar(18) NULL, pnr_codtchi smallint NULL, nnr_codart2 varchar(18) NULL, pnr_codtchi2 smallint NULL, nnr_codart3 varchar(18) NULL, pnr_codtchi3 smallint NULL, nnr_codart4 varchar(18) NULL, pnr_codtchi4 smallint NULL ); INSERT dbo.persNNAppMovCtra VALUES(1, 1, 'P010', 10); INSERT dbo.persNNAppMovCtra VALUES(1, 1, 'P020', 15); INSERT dbo.persNNAppMovCtra VALUES(1, 1, 'P030', 20); INSERT dbo.persNNAppMovCtra VALUES(1, 1, 'P032', 10); INSERT dbo.persNNAppMovCtra VALUES(1, 2, 'P035', 500); INSERT dbo.persNNAppMovCtra VALUES(2, 1, 'P012', 25); INSERT dbo.persNNAppMovCtra VALUES(2, 1, 'P020', 20); INSERT dbo.persNNAppMovCtra VALUES(2, 1, 'P032', 15); WITH CTE_Data AS ( SELECT *, ROW_NUMBER() OVER(PARTITION BY nnr_numcontr, nnr_rinnid ORDER BY nnr_numcontr) AS Col FROM dbo.persNNAppMovCtra ) INSERT dbo.persContrattiXChiamate SELECT nnr_numcontr , nnr_rinnid , MAX(CASE Col WHEN 1 THEN nnr_codart ELSE NULL END) AS C1 , MAX(CASE Col WHEN 1 THEN pnr_codtchi ELSE NULL END) AS C2 , MAX(CASE Col WHEN 2 THEN nnr_codart ELSE NULL END) AS C3 , MAX(CASE Col WHEN 2 THEN pnr_codtchi ELSE NULL END) AS C4 , MAX(CASE Col WHEN 3 THEN nnr_codart ELSE NULL END) AS C5 , MAX(CASE Col WHEN 3 THEN pnr_codtchi ELSE NULL END) AS C6 , MAX(CASE Col WHEN 4 THEN nnr_codart ELSE NULL END) AS C7 , MAX(CASE Col WHEN 4 THEN pnr_codtchi ELSE NULL END) AS C8 FROM CTE_Data GROUP BY nnr_numcontr, nnr_rinnid ORDER BY nnr_numcontr, nnr_rinnid; SELECT * FROM dbo.persContrattiXChiamate; /* Output: nnr_numcontr nnr_rinnid nnr_codart pnr_codtchi nnr_codart2 pnr_codtchi2 nnr_codart3 pnr_codtchi3 nnr_codart4 pnr_codtchi4 ------------ ----------- ------------------ ----------- ------------------ ------------ ------------------ ------------ ------------------ ------------ 1 1 P010 10 P020 15 P030 20 P032 10 1 2 P035 500 NULL NULL NULL NULL NULL NULL 2 1 P012 25 P020 20 P032 15 NULL NULL (3 row(s) affected) */ DROP TABLE dbo.persNNAppMovCtra, dbo.persContrattiXChiamate;
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5