2012-12-20 119 views
1

我的问题:我有我的基表存储用户名和他们的反馈响应。在每个用户的表格中,我有2个问题和2个回答。将列转换为SQL Server中的行

ans1 ans2是文本列,用户可以在其中输入他们对每个问题/答案对的评论。

输入表:

username question1 question2 opt1 ans1 opt2 ans2 
----------------------------------------------------------------------- 
user1 ques1 ques2 a answer1 b answer2 
user2 ques1 ques2 c answer11 d answer21 

我想我的输出(给定的输入如上表)查询应在以下格式产生结果:

Username Question Option Comment 
---------------------------------------------------- 
user1 ques1 a answer1 
user1 ques2 b answer2 
user2 ques1 c answer11 
user2 ques2 d answer21 

我尝试这样的查询来获得结果,但它是以某种方式采取所有可能的组合..请建议..

SELECT Username,Question,Answers,Options 
FROM 
(SELECT username,opt1,opt2,ans1,ans2,ques1,ques2 
FROM dbo.tab1) p 
    UNPIVOT(Question FOR q1 IN (ques1, ques2))AS unpvt1 
    UNPIVOT(Answers FOR answer1 IN (ans1, ans2))AS unpvt2 
    UNPIVOT(Options FOR a IN (opt1, opt2))AS unpvt3 
GO 

回答

0

我认为你可以不使用UNPIVOT查询;请检查

select 
    distinct UserName, 
    Question1 AS Question, 
    Opt1 AS OPT, 
    Ans1 AS Comment 
From 
    tblFeedback where Question1='Quest1' 
UNION ALL 
select 
    distinct UserName, 
    Question2 AS Question, 
    Opt2 AS OPT, 
    Ans2 AS Comment 
From 
    tblFeedback where Question2='Quest2' 
+0

是的..这工作完美..谢谢你.. –