Sql 选择一个文本值而不是另一个文本值
我有一张类似的表格,如下所示:Sql 选择一个文本值而不是另一个文本值,sql,amazon-redshift,Sql,Amazon Redshift,我有一张类似的表格,如下所示: store manager status 1 tim good 2 anna good 3 ben bad 4 tim bad 5 tim ok 我的目标是获得如下所示的期望输出。我想显示每个经理的状态。顺序首选项为bad>ok
store manager status
1 tim good
2 anna good
3 ben bad
4 tim bad
5 tim ok
我的目标是获得如下所示的期望输出。我想显示每个经理的状态。顺序首选项为bad>ok>good
。因此,如果一个经理(tim)有3种不同的门店状态,它将以bad
作为最终状态
manager status
tim bad
anna good
ben bad
我想不出一个创造性的解决方案来选择一个值而不是另一个值,因此如果有人能给我一个关于如何解决这个问题的建议/方法,我将不胜感激。一种方法是使用条件逻辑进行聚合,如下所示:
select manager,
coalesce(max(case when status = 'bad' then status end),
max(case when status = 'ok' then status end),
max(case when status = 'good' then status end)
)
from t
group by manager;
您还可以使用窗口功能:
select t.*
from (select t.*,
row_number() over (partition by manager
order by case status when 'bad' then 1 when 'ok' then 2 when 'good' then 3 else 4 end
) as seqnum
from t
) t
where seqnum = 1;
非常感谢。我根本没有想到COALESE(MAX())函数,这太棒了!