是否存在将多行聚合为一行的Access SQL查询?

时间:2015-06-23 18:23:52

标签: sql ms-access

我有一个看起来像这样的表:

A 1 
A 2 
B 1 
B 2
B 3

我想生成一个如下所示的结果集:

A 1 2 
B 1 2 3

第一栏有问题和其他答案,但每个答案都必须在不同的栏目中。所以我不需要在同一列中像1,2,3这样的concat。

期望:

Question Answer1 Answer2 Answer3 ... 
A        1       2
B        1       2       3

是否有SQL语句可以执行此操作?我正在使用Access 2007。

我的基本查询是:

SELECT questions.Question, answers.Answer 
FROM ((base INNER JOIN customers ON base.Patient_ID = customers.Identyfikator) LEFT JOIN answers ON base.answer_ID = answers.ID) 
LEFT JOIN questions ON base.question_ID = questions.ID 
WHERE (((customers.Identyfikator)=[param_ID]));

2 个答案:

答案 0 :(得分:0)

是的,您可以使用var isiOS = (navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone') || navigator.userAgent.match('iPod')); var isAndroid = navigator.userAgent.match('Android'); var isWP = navigator.userAgent.match('Windows Phone') || navigator.userAgent.match('IEMobile'); if (isiOS){ setTimeout(function () { window.location = siteURL; }, 25); //fall back url $('body').append('<iframe style="visibility: hidden;" src="'+ appURI +'" />'); } else if ((isAndroid) || (isWP)){ setTimeout(function () { window.location = siteURL; }, 25); //fall back url window.location = appURI; } else { // if (isOtherPlatform) window.location = siteURL; }

这是一个例子:

PIVOT

不确定这是否完全正确,因为我没有2007和你的模型进行测试,但试试这个:

SELECT Config_ID
FROM TABLE_01
GROUP BY Config_ID
PIVOT ConfigField

答案 1 :(得分:0)

您需要使用PIVOT,但MS Access语法是非标准的 请尝试以下代码:

TRANSFORM questions.Answer
SELECT questions.Question, answers.Answer 
FROM ((base INNER JOIN customers ON base.Patient_ID = 
customers.Identyfikator) LEFT JOIN answers ON base.answer_ID = answers.ID) 
LEFT JOIN questions ON base.question_ID = questions.ID 
WHERE (((customers.Identyfikator)=[param_ID]))
GROUP BY questions.question
PIVOT questions.Answer;

我已经尝试了对您给定的样本数据的查询,并且我已经获得了预期的结果。