0
我有一個總是返回一行的存儲過程。我想將每個column_name及其相應的值轉換爲一行。示例 -旋轉存儲過程的結果?
ID | Name | Address
-----------------------
1 | Jim | Home
應該成爲 -
ID | 1
---------------------
Name | Jim
Address | Home
我該怎麼辦呢?
我有一個總是返回一行的存儲過程。我想將每個column_name及其相應的值轉換爲一行。示例 -旋轉存儲過程的結果?
ID | Name | Address
-----------------------
1 | Jim | Home
應該成爲 -
ID | 1
---------------------
Name | Jim
Address | Home
我該怎麼辦呢?
您需要將存儲過程中的值插入(臨時)表中,然後從那裏取消轉移。僞代碼如下:
CREATE TABLE #t (ID int, Name varchar(100), Address varchar(100))
INSERT INTO #t
EXEC stored_proc
SELECT ID = 'Name', [1] = Name
FROM #t
UNION ALL
SELECT ID = 'Address', [1] = Address
FROM #t
DROP TABLE #t
爲什麼你需要在SQL中進行數據透視?在應用程序或報告圖層中旋轉通常要簡單得多。 –
@DStanley - 我不知道如何旋轉變得更簡單的應用程序/報告圖層。我可以在C#中實現它,但我不知道如何去做。 – Steam
大多數報告解決方案允許動態旋轉(基於行值動態添加列)。一個例子是SSRS中的「矩陣」控制。許多用戶控件庫都有可以動態旋轉的網格。 SQL旋轉需要靜態列名(使用動態SQL模),語法不直觀。 –