我需要從存儲過程輸出數據作爲結果集,其中源數據的列在輸出中表示爲行。我應該在輸出中的每個列中看到一行記錄,這些記錄位於我的源數據中,並且我的輸出中的每一行都會在我的源數據中看到一列。我只是沒有看到我可以如何使用Pivot或其他我看過的方法來做到這一點。SQL將列移動到行
一旦我的數據面向我喜歡的方式,我想我會查詢sys.columns注入源數據列名作爲我的輸出的第一列。我還可能需要事先查詢將用作輸出列名稱的源數據值。我想象未來我會有一些宏偉的動態SQL,但如果需要,我可以自己分類。我主要關心如何將列轉換爲行。見下:
SELECT
ID
,XID
,Amount
FROM (
SELECT 11 as ID, 301 as XID, 50001 as Amount UNION ALL
SELECT 12 as ID, 302 as XID, 50002 as Amount UNION ALL
SELECT 13 as ID, 303 as XID, 50003 as Amount UNION ALL
SELECT 14 as ID, 304 as XID, 50004 as Amount
) T1
/*
The above query returns this:
ID XID Amount
----------------
11 301 50001
12 302 50002
13 303 50003
14 304 50004
Instead I would like to see this:
Column 11 12 13 14
-----------------------------------
ID 11 12 13 14
XID 301 302 303 304
Amount 50001 50002 50003 50004
*/
退房PIVOT:https://technet.microsoft.com/en- us/library/ms177410(v = sql.105).aspx – Leonidas199x
這與你想要的相反,但它守ld引導你在正確的方向http://stackoverflow.com/questions/15931607/convert-rows-to-columns-using-pivot-in-sql-server –
使用PIVOT你可以導致ID列的源值表示輸出中每個ID的列,但不能導致其餘源列被表示爲行。我看不到如何用PIVOT做我想要的。 – RedRocketFire