2012-06-09 102 views
0

我需要的列數據轉換成單排多列轉換具有多個行單列成具有多個列

實施例的單排 - I創建的臨時表加載數據的列

CREATE TABLE TestC (Comments Char(100), Row_Count [int] IDENTITY(1,1)) 

INSERT INTO TestC VALUES('A'),('B'),('C'),('D') 

Select Min(Case When Row_Count = 1 Then Comments End) As Comments 
, Min(Case When Row_Count = 2 Then Comments End) As Comments 
, Min(Case When Row_Count = 3 Then Comments End) As Comments 
, Min(Case When Row_Count = 4 Then Comments End) As Comments 
, Min(Case When Row_Count = 5 Then Comments End) As Comments 
, Min(Case When Row_Count = 6 Then Comments End) AS Comments 
, Min(Case When Row_Count = 7 Then Comments End) AS Comments 
FROM TestC 

Result

我試圖使它動態查詢,下面是代碼片段,我嘗試了目前

DECLARE @sql AS NVARCHAR (MAX); 
SELECT @sql = ' SELECT Min (CASE WHEN [Row_Count] =' + CAST ([Row_Count] AS CHAR(5)) + 
' THEN [Comments] END) AS Comments' 
FROM  [dbo].[TestC]; 
SET @sql = @sql + N' FROM [dbo].[TestC] '; 
PRINT @sql 
EXECUTE sp_executesql @sql; 

這仍然需要一些調整。感謝您的幫助..

+0

如果我得到它的權利,你想將行轉換成列, 那麼爲什麼不簡單地交叉表明它..! –

+0

是的。你只需要將行轉換爲列。讓我嘗試跨標籤 – Siva

回答

1

可以使用旋轉的查詢,如下面:

SELECT Pvt.* 
FROM (
    SELECT * 
    FROM TestC 
    )AS P 
PIVOT (MIN(Comments) FOR Row_Count IN ([1],[2],[3],[4],[5],[6],[7]))Pvt 

編輯: 您可以參考以下鏈接:

Dynamic Pivot Link 1

Dynamic Pivot Link 2

Dynamic Pivot Link 3

+0

這需要實際上是動態的。這裏的答案是硬編碼 – Siva

+0

請看我的編輯。 –

+0

好工作謝謝.... – Siva