考慮下表#document_fields
如何將UNPIVOT列轉化爲行?
id x y z
------------------
1 foo bar baz
2 one two three
3 aaa bbb ccc
4 123 456 789
列的數目可能會有所不同,因爲這樣做的列名。我需要的列轉動到行這樣的:
id field value
---------------
1 x foo
1 y bar
1 z baz
2 x one
2 y two
2 z three
.
.
3 z 789
我想了解在SQL Server的作品轉動方式,但不能得到任何比這再:
select
*
into
#document_fields_pivot
from (
select * from (
select *
from #document_fields
) t
pivot (
-- ??
) p
) tbl
任何人都可以幫我完成這個查詢/解釋我pivoting?任何幫助是極大的讚賞。
謝謝!但我收到了一個錯誤:列「y」的類型與UNPIVOT列表中指定的其他列的類型衝突。我在另一個線程中讀取這是因爲所有的列必須具有相同的數據類型和長度。在這個例子中,是否有一種快速遍歷列(x,y和z,但據說可能還有數以百計)的快速方法,並將它們全部轉換爲相同的數據記錄和長度? – Pr0no
不是我所知道的。不過,我很好奇你爲什麼會在你的桌子上有這種結構。我的意思是你不應該在一個專欄中有文字和數字嗎?或者我錯過了一些簡單的東西? –
是的,它真的很簡單:)客戶希望以這種格式進行數據轉儲,以便在Excel中輕鬆過濾。所以這個腳本只是生成那個excel。當然,實際上所有的東西都應該存儲:) – Pr0no