试图使Unpivot应用于多个列,并且正在努力使其正常工作。也许它不是正确的解决方案,所以绝对可以接受建议。这是我的数据集的一个例子
Sample Wanted Data Set In Excel
很抱歉,这些链接还不能完全在这些帖子中贴上图片。
这是我接近的代码,好像我已经接近了……但也许没有。
SELECT
RunDate,
ShipMode,
Amt
FROM
(SELECT
CAST(sh.RunDt as DATE) as RunDt,
sh.method1, sh.method2, sh.method3,
sh.method4, sh.method5
FROM
[dbo].sampletable sh
WHERE
RunDt = '2016-10-17') AS P
UNPIVOT (
RunDate FOR ShipMode IN(method1, method2, method3,method4, method5)
) AS Unpvt
答案 0 :(得分:2)
您的几个名字有误。您可以使用SQL取消透视:
SELECT
RunDt ,ShipMode ,Amt FROM (
SELECT
CAST(sh.RunDt as DATE) as RunDt
,sh.method1
,sh.method2
,sh.method3
,sh.method4
,sh.method5
FROM [dbo].sampletable sh
WHERE RunDt = '2018-10-17'
) AS P UNPIVOT ( Amt FOR ShipMode IN(method1, method2, method3,method4, method5) ) as Unpvt
答案 1 :(得分:1)
另一个选择是使用CROSS APPLY,而不是UNPIVOT。它提供了更多的灵活性
示例
Select A.RunDt
,B.*
From YourTable A
Cross Apply ( values ('Method1',Method1)
,('Method2',Method2)
,('Method3',Method3)
,('Method4',Method4)
,('Method5',Method5)
) B(Overall,Amt)
Where RunDt = '2016-10-17'