我得到了這張有很多行的表:
| ID | 日期 1 | 日期 2 |
|---|---|---|
| 1 | 2001-09-09 | 1992-10-10 |
| 2 | 2008-07-07 | 2021-01-01 |
我想寫一個查詢來得到這種結果:
| ID | 日期 |
|---|---|
| 1 | 2001-09-09 |
| 1 | 1992-10-10 |
| 2 | 2008-07-07 |
| 2 | 2021-01-01 |
謝謝您的幫助
uj5u.com熱心網友回復:
絕對最簡單的方法:
SELECT ID, [Date] = [date 1] FROM dbo.TableName
UNION ALL
SELECT ID, [Date] = [date 2] FROM dbo.TableName
ORDER BY ID;
但是,在較大的表上,其他不掃描兩次的解決方案(如CROSS APPLY)會更好。或者UNPIVOT:
SELECT ID, [Date]
FROM dbo.TableName
UNPIVOT ([Date] FOR d IN ([Date 1],[Date 2])) AS p
ORDER BY ID;
- 示例db<>fiddle
uj5u.com熱心網友回復:
一種選擇是使用 CROSS APPLY
Select A.ID
,B.*
From YourTable A
Cross Apply ( values ([date 1])
,([date 2])
)B(Date)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411047.html
標籤:
