将列拆分为行的最佳方法是什么(例如矩阵?)
表格示例:
Name Hours1 Hours2 Hours3
Jon 32 40 30
Ana 40 0 40
结果(不显示0个值):
Name Hours
Jon 32
Jon 40
Jon 30
Ana 40
Ana 40
我可以想到的一种方法是使用
Union
SELECT
Name,
Hours1
FROM #HOURSTABLE
WHERE Hours1 <> 0
UNION ALL
SELECT
Name,
Hours2
FROM #HOURSTABLE
WHERE Hours2 <> 0
UNION ALL
SELECT
Name,
Hours3
FROM #HOURSTABLE
WHERE Hours3 <> 0
还有其他建议吗?
最佳答案
我更喜欢“交叉申请”这类商品。它提供了更多的灵活性。
例
Select Name
,B.*
From YourTable A
Cross Apply ( values (Hours1)
,(Hours2)
,(Hours3)
) B(Hours)
Where B.Hours<>0
退货
Name Hours
Jon 32
Jon 40
Jon 30
Ana 40
Ana 40
关于sql - 将列拆分为行的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48104231/