将多个内部连接行组合成一行,具有多个列

时间:2014-04-14 09:25:14

标签: sql

我有一个问题表和一个答案表,其中有4到8个答案连接到一个问题。当我想获得问题列表及其答案时,我使用以下代码:

select q.QuestionID, q.Question, a.Answer
from Question as q inner join Answer as a
on q.QuestionID=a.QuestionID;

这为每个答案提供了一行,每行重复一个问题。但是,我希望每个问题只能获得一行,并在单独的列中显示答案。如果可能的话,我也想将此限制为仅4个答案。如果超过4,则应忽略其余部分。然而,这并不重要。

四个答案列将命名为“Correct”,“Wrong1”,“Wrong2”和“Wrong3”。表中的第一个(具有最低的AnswerID)是正确的。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

select q.QuestionID, q.Question, 
   CASE <some field>
   WHEN <condition> THEN a.Answer
   END as Correct,
   CASE <some field2>
   WHEN <condition2> THEN a.Answer
   END as Wrong1
   ...
from Question as q inner join Answer as a
on q.QuestionID=a.QuestionID
group by q.QuestionID

您可以按问题分组并为“正确”,“错误1”,“错误2”和“错误3”列定义条件字段