Ste*_*nie 2 sql sql-server matrix
将列拆分成行的最佳方法是什么(如矩阵?)示例表:
Name Hours1 Hours2 Hours3
Jon 32 40 30
Ana 40 0 40
Run Code Online (Sandbox Code Playgroud)
结果(不显示0值):
Name Hours
Jon 32
Jon 40
Jon 30
Ana 40
Ana 40
Run Code Online (Sandbox Code Playgroud)
我能想到这样做的一种方法是使用 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
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?
我更喜欢CROSS APPLY这样的物品.它提供了更多的灵活性.
例
Select Name
,B.*
From YourTable A
Cross Apply ( values (Hours1)
,(Hours2)
,(Hours3)
) B(Hours)
Where B.Hours<>0
Run Code Online (Sandbox Code Playgroud)
返回
Name Hours
Jon 32
Jon 40
Jon 30
Ana 40
Ana 40
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |