【发布时间】:2016-05-27 05:51:11
【问题描述】:
我有一个如下所示的表 1
Name role F1 status1 status 2
sam player yes null null
sam admin yes null null
sam guest no x x
我希望结果是
Name role status1 status 2
sam admin,player x x
我已查询 list_agg 将角色放入一行。但当 F1='yes' 时,sam 的状态为 null 以显示
我使用的查询
select name,list_agg(role,',') within group(order by name),max(status1),max(status2)
from table 1 where F1='yes'
group by name
但我得到了这样的东西
name role status1 status2
sam admin,player null null
我希望仅在角色列上工作的位置和 max(status1) 处于 status1 即'x'。请帮助我。谢谢
【问题讨论】:
-
您有什么没有告诉我们的吗?如果您在执行查询时没有收到错误消息,我会感到非常惊讶。您正在按名称分组,但尝试显示未聚合的字段,例如
water-access而不是min(water-access)或max(water-access)等。 -
@ThorstenKettner.sry 我已经更新了问题。请帮助我
-
使用 Tim 的查询。将
LISTAGG(Role, ',')替换为LISTAGG(CASE WHEN F1 = 'yes' THEN Role END, ',')以便仅在F1 为yes 时向字符串添加角色。