我有數據象下面這樣:SQL樞軸問題
Year January Feb March April
2017 20 15 7 25
是否可以格式化數據
Year Month Value
- 2017 January 20
- 2017 Feb 15
- 2017 March 7
- 2017 April 25
非常感謝你的幫助。我一直試圖達到這個數小時,但我無法。
我有數據象下面這樣:SQL樞軸問題
Year January Feb March April
2017 20 15 7 25
是否可以格式化數據
Year Month Value
- 2017 January 20
- 2017 Feb 15
- 2017 March 7
- 2017 April 25
非常感謝你的幫助。我一直試圖達到這個數小時,但我無法。
這是unpivot
,但我更喜歡使用apply
:
select v.*
from t outer apply
(values (t.year, 'January', t.January),
(t.year, 'Feb', t.Feb),
(t.year, 'March', t.March),
(t.year, 'April', t.April)
) v(year, month, value);
apply
實現所謂的 「橫向連接」 的東西。這很像一個可以返回多個列的相關子查詢。橫向連接非常強大 - 未經處理只是他們所做事情的開始。但不透明是開始瞭解它們的一種方式。
謝謝戈登,你有什麼理由爲什麼你喜歡申請undeivot – Agga
@Agga。 。 。我想我在問題中解釋了這一點。 'apply'是一個通用的,強大的運營商。 'unpivot'只存在於一個特定的用例中。 –
您可以使用UNPIVOT
。
DECLARE @T TABLE (Year INT, January INT, Feb INT, March INT, April INT)
INSERT INTO @T VALUES(2017,20,15,7,25)
SELECT [Year], [Month], [Value] FROM @T
UNPIVOT([Value] FOR [Month] IN([January], [Feb], [March], [April])) AS UNPVT
結果
Year Month Value
----------- ----------- -----------
2017 January 20
2017 Feb 15
2017 March 7
2017 April 25
你真棒!有效 – Agga
所以[許多](https://stackoverflow.com/questions/18617243/sql-unpivot-multiple-columns-data)[重複](HTTPS://計算器.COM /問題/ 19055902/UNPIVOT-與列名稱)。 –