2013-10-08 26 views
1

我有一个数据集,其中包含许多订单,每个订单都包含订单商品。我有逻辑寻找一个特定的订单项目..使用NULL值对字符串进行分组

order_id status 
2933475 PAID \N 
2933475 PAID \N 
2933475 PAID VALUE 
2933475 PAID \N 

与价值线项目可以出现在任何行项目或者根本没有。当我通过order_id进行分组时,我希望它显示VALUE(如果每个订单ID都存在)或\ N(如果不存在)。

我认为使用COALESCE()会做到这一点,但我仍然得到NULL时分组这个顺序。

回答

1

根据您的表/查询结构,这样的事情可能工作:

select 
    order_id, 
    max(case when status = 'VALUE' then status else NULL end) as status 
from table 
group by order_id 
+0

谢谢!没有考虑到这一点,因为我认为NULL没有任何价值可以视为最大值。猜猜我需要再次打开书本! – Jonathan

+0

没问题。 NULL仅用于聚合 - 所以NULL,1和2的AVG是1.5。请记住!如果它也回答你的问题,请确保你将它标记为正确的答案。谢谢 :) –

相关问题