繁体   English   中英

将多个内部联接的行合并为多列的一行

[英]Combine multiple inner joined rows into one row with multiple columns

我有一个问题表和一个答案表,其中有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,则应忽略其余部分。 但是,这并不重要。

四个答案列将分别命名为“正确”,“错误1”,“错误2”和“错误3”。 表中的第一个(具有最低的AnswerID)是正确的。

谢谢您的帮助!

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”列定义条件字段

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM