SQLite:group_concat似乎只拉第一行?

问题描述 投票:0回答:1

我有一个基本查询,可以根据需要运行,并告诉我哪些人对事物'a'具有多少项:

SELECT Person || ' ' || COUNT(ResponsibleThing) FROM table WHERE thing='a' GROUP BY Person;

Person || ' ' || COUNT(ResponsibleThing)
-----------------------------------------------
Joe     340
Chris   34
Dave    612
Fred    272

我真正想要的是将此结果集折叠为CSV,以便我可以在另一列上旋转,其结果集类似于:

thing Person || '   ' || COUNT(ResponsibleThing)
----- -----------------------------------------
a     Joe     340,Chris     34,Dave     612,Fred    272
b     Chris     100, Frank     34

似乎是group_concat,但是奇怪的是,当我尝试修改上面的查询时,我只得到了第一个条目:SELECT group_concat((SELECT Person || ' ' || COUNT(ResponsibleThing) FROM table WHERE thing='a' GROUP BY Person));

group_concat((SELECT Person || '  ' || COUNT(ResponsibleThing) FROM table WHERE thing='a' GROUP BY Person))
----------------------------------------------------------------------------------------------------
Joe     340

关于如何获取完整结果集的任何想法?非常感谢。

sql sqlite group-by group-concat
1个回答
1
投票

您需要两个聚合级别:首先是按人员(这是您现有的查询),然后是整体:

select group_concat(res) res
from (
    select person || ' ' || count(*) res
    from mytable
    where thing = 'a'
    group by person
) t
© www.soinside.com 2019 - 2024. All rights reserved.