2014-01-06 106 views
0

我有一個總是返回一行的存儲過程。我想將每個column_name及其相應的值轉換爲一行。示例 -旋轉存儲過程的結果?

ID | Name | Address 
----------------------- 
1 | Jim | Home 

應該成爲 -

ID  | 1 
--------------------- 
Name | Jim 
Address | Home 

我該怎麼辦呢?

+1

爲什麼你需要在SQL中進行數據透視?在應用程序或報告圖層中旋轉通常要簡單得多。 –

+0

@DStanley - 我不知道如何旋轉變得更簡單的應用程序/報告圖層。我可以在C#中實現它,但我不知道如何去做。 – Steam

+0

大多數報告解決方案允許動態旋轉(基於行值動態添加列)。一個例子是SSRS中的「矩陣」控制。許多用戶控件庫都有可以動態旋轉的網格。 SQL旋轉需要靜態列名(使用動態SQL模),語法不直觀。 –

回答

1

您需要將存儲過程中的值插入(臨時)表中,然後從那裏取消轉移。僞代碼如下:

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