我有以下数据:
ID Owner
--------
01 Sarah
01 Andrew
02 Sarah
03 Andrew
04 Andrew
04 Sarah
05 Andrew
我希望得到以下输出:
ID Grouped_Owners
---------
01 Andrew and Sarah
02 Sarah
03 Andrew
04 Andrew and Sarah
05 Andrew
我已尝试过此查询(以及类似方法的其他迭代):
select
distinct(id)
, case
when count(id) > 1 then 'Andrew and Sarah'
else owner
end as Grouped_Owners
from Ads
group by id, Owner
order by id
...但我无法得到结果。我怀疑我可能需要使用窗口/分区功能,但这似乎有些过分。我已经搜索了互联网,但我似乎无法找到适合这个用例的任何内容:/
我相信这对于这里的大师来说是一个非常快速的答案! :)谢谢!
答案 0 :(得分:1)
您需要使用GROUP_CONCAT和GROUP BY
:
SELECT
ID,
GROUP_CONCAT(Owner SEPARATOR ' and ') AS Grouped_Owners
FROM Ads
GROUP BY ID
ORDER BY ID