SQL Unpivot多列数据
发布时间:2020-12-12 16:19:42 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用SQL Server 2008,我正在尝试解析数据,这里是我使用的SQL代码, CREATE TABLE #pvt1 (VendorID int,Sa int,Emp1 int,Sa1 int,Emp2 int)GOINSERT INTO #pvt1 VALUES (1,2,4,3,9);GO--Unpivot the table.SELECT distinct VendorID,Orders,Orders1FROM (
我正在使用SQL Server 2008,我正在尝试解析数据,这里是我使用的SQL代码,CREATE TABLE #pvt1 (VendorID int,Sa int,Emp1 int,Sa1 int,Emp2 int) GO INSERT INTO #pvt1 VALUES (1,2,4,3,9); GO --Unpivot the table. SELECT distinct VendorID,Orders,Orders1 FROM (SELECT VendorID,Emp1,Sa,Emp2,Sa1 FROM #pvt1 ) p UNPIVOT (Orders FOR Emp IN (Emp1,Emp2) )AS unpvt UNPIVOT (Orders1 FOR Emp1 IN (Sa,Sa1) )AS unpvt1; GO 这是上面代码的结果. VendorID Orders Orders1 1 4 2 1 4 3 1 9 2 1 9 3 但我希望我的输出是下面所示的方式 VendorID Orders Orders1 1 4 2 1 9 3 与上述代码的关系为2与4相关,3与9相关. 我该怎么办? 解决方法解开数据的一种更简单的方法是使用“交叉应用”来对数据进行分组:select vendorid,orders,orders1 from pvt1 cross apply ( select emp1,sa union all select emp2,sa1 ) c (orders,orders1); 请参见SQL Fiddle with Demo.或者,如果不想使用UNION ALL,可以使用CROSS APPLY和VALUES子句: select vendorid,orders1 from pvt1 cross apply ( values (emp1,sa),(emp2,sa1) ) c (orders,orders1); 见SQL Fiddle with Demo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |