SQL 服务器反透视多列
SQL Server unpivot with multiple columns
试图让一个 Unpivot 应用到几个列上,但我正在努力让它正常工作。也许它不是正确的解决方案,所以绝对愿意接受建议。这是我的数据集的示例
Sample Data Set In Excel
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
除了 UNPIVOT,另一种选择是使用 CROSS APPLY。它提供了更多的灵活性
例子
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'
你只是有几个名字错了。您可以使用 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
试图让一个 Unpivot 应用到几个列上,但我正在努力让它正常工作。也许它不是正确的解决方案,所以绝对愿意接受建议。这是我的数据集的示例
Sample Data Set In Excel
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
除了 UNPIVOT,另一种选择是使用 CROSS APPLY。它提供了更多的灵活性
例子
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'
你只是有几个名字错了。您可以使用 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