我正在使用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);