SQLite:group_concat 似乎只拉第一行?
Posted
技术标签:
【中文标题】SQLite:group_concat 似乎只拉第一行?【英文标题】:SQLite: group_concat only seems to pull first row? 【发布时间】:2020-04-19 09:25:23 【问题描述】:我有一个基本查询,它可以根据需要运行,并告诉我哪些人有多少物品用于“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
关于如何连接完整的结果集有什么想法吗?非常感谢。
【问题讨论】:
【参考方案1】:您需要两个级别的聚合:首先是按人(即您现有的查询),然后是整体:
select group_concat(res) res
from (
select person || ' ' || count(*) res
from mytable
where thing = 'a'
group by person
) t
【讨论】:
以上是关于SQLite:group_concat 似乎只拉第一行?的主要内容,如果未能解决你的问题,请参考以下文章
group_concat sqlite 和 order by
查询中 group_concat 上的 SQLITE 不需要的行为