2014-01-30 59 views
0

我正在尋找一種解決方案,以將以下列轉換爲t-SQL的兩個新行(我使用2008年,如果重要)。TSQL - 行列與新列

這裏是什麼,我有一個例子:

[Question1] | [Question2] | [Question3] | [Question4] | [Question5] | [Question6] 
1 'Answer1'  'Answer2'  'Answer3'  'Answer4'  'Answer5'  'Answer6' 

這裏是我想什麼一個例子:

[Questions] | [Answers] 
1 'Question1' 'Answer1' 
2 'Question2' 'Answer2' 
3 'Question3' 'Answer3' 
4 'Question4' 'Answer4' 
5 'Question5' 'Answer5' 
6 'Question6' 'Answer6' 

我希望我的例子是很清晰。

謝謝。


因此,在用戶2989408和M.Ali之間,我能夠拼湊查詢。 我主要使用user2989408的查詢,但很快發現我需要爲我的查詢設置數據類型,否則它將無法工作。我只是施放(列爲varchar(max)),它工作。

這是我最終的結果。

select 
    Question 
, Answer 
from 
    (select 
    , cast(Question1 as varchar(max)) 
    , cast(Question2 as varchar(max)) 
    , cast(Question3 as varchar(max)) 
    , cast(Question4 as varchar(max)) 
    , cast(Question5 as varchar(max)) 
    , cast(Question6 as varchar(max)) 
    from table) p 
unpivot 
    (Answers for Questions in 
     ( Question1 
     , Question2 
     , Question3 
     , Question4 
     , Question5 
     , Question6) 
)AS unpvt; 

非常感謝。

+2

嘗試UNPIVOT。 http://technet.microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx – PeterRing

回答

3

試試這個UNPIVOT查詢。它應該工作。

SELECT ID, Questions, Answers 
FROM 
    (SELECT ID, Question1, Question2, Question3, Question4, Question5, Question6 
    FROM Table) p 
UNPIVOT 
    (Answers FOR Questions IN 
     (Question1, Question2, Question3, Question4, Question5, Question6) 
)AS unpvt; 
1
DECLARE @TABLE TABLE([Questions] NVARCHAR(100),[Answers] NVARCHAR(100)) 
INSERT INTO @TABLE VALUES 
('Question1','Answer1'),('Question2','Answer2'),('Question3','Answer3'), 
('Question4','Answer4'),('Question5','Answer5'),('Question6','Answer6') 

SELECT * FROM 
(
SELECT * FROM @TABLE) T 
PIVOT (MAX([Answers]) 
     FOR [Questions] 
     IN ([Question1],[Question2],[Question3] 
       ,[Question4],[Question5],[Question6]) 
     )p 


╔═══════════╦═══════════╦═══════════╦═══════════╦═══════════╦═══════════╗ 
║ Question1 ║ Question2 ║ Question3 ║ Question4 ║ Question5 ║ Question6 ║ 
╠═══════════╬═══════════╬═══════════╬═══════════╬═══════════╬═══════════╣ 
║ Answer1 ║ Answer2 ║ Answer3 ║ Answer4 ║ Answer5 ║ Answer6 ║ 
╚═══════════╩═══════════╩═══════════╩═══════════╩═══════════╩═══════════╝ 
+0

OP希望它成爲其他方式。 – user2989408