我有下表。
表格1
| ID | 12/1 | 1/1 | 2/1 |
|---|---|---|---|
| X | 1 | 2 | 3 |
| 是 | 4 | 5 | 6 |
| Z | 7 | 8 | 9 |
我想要下表,
| ID | 日期 | 預報 |
|---|---|---|
| X | 12/1 | 1 |
| X | 1/1 | 2 |
| X | 2/1 | 3 |
| 是 | 12/1 | 4 |
| 是 | 1/1 | 5 |
| 是 | 2/1 | 6 |
| Z | 12/1 | 7 |
| Z | 1/1 | 8 |
| Z | 2/1 | 9 |
無論如何我可以在SQL中做到這一點嗎?
任何幫助將不勝感激!
提前致謝。
uj5u.com熱心網友回復:
UNPIVOT 或 VALUES 方法的性能會更好,但根據您的列名,我懷疑您會隨著時間的推移擁有變數/擴展列。
這是一種無需實際使用動態 SQL 或無需指定列(僅要排除的列)即可動態取消資料透視的方法
例子
Select A.ID
,B.*
From YourTable A
Cross Apply (
Select Date = [Key]
,Forecast = Value
From OpenJson((Select A.* For JSON Path,Without_Array_Wrapper,INCLUDE_NULL_VALUES ))
Where [Key] not in ('ID')
) B
結果
ID Date Forecast
X 12/1 1
X 1/1 2
X 2/1 3
Y 12/1 4
Y 1/1 5
Y 2/1 6
Z 12/1 7
Z 1/1 8
Z 2/1 9
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377483.html
標籤:sql sql-server 查询语句
