SQL查询与case函数不同

时间:2016-04-02 03:14:09

标签: sql amazon-redshift

我有以下数据:

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

...但我无法得到结果。我怀疑我可能需要使用窗口/分区功能,但这似乎有些过分。我已经搜索了互联网,但我似乎无法找到适合这个用例的任何内容:/

我相信这对于这里的大师来说是一个非常快速的答案! :)谢谢!

1 个答案:

答案 0 :(得分:1)

您需要使用GROUP_CONCATGROUP BY

SELECT 
ID,
GROUP_CONCAT(Owner SEPARATOR ' and ') AS Grouped_Owners
FROM Ads
GROUP BY ID
ORDER BY ID

Check Demo