满足2个条件时如何按订单汇总

时间:2018-07-05 18:39:34

标签: sql firebird

在尝试获得一套可以满足两个条件的订单时,我遇到了这个问题。条件在2个不同的列中,例如,当列的品牌名称为“ orion”且列的类型为“ A”时。我还需要将其按orderID分组。 我正在尝试的代码给了我一个空的集。

select orderID,product_name,brand_name,type 
from orders
group by 1,2,3,4 
having sum(case when brand.name='orion' and type='A' then 1 else 0 end) = 1

如果我使用OR条件,该命令将不起作用,因为它还会带来与这两个条件不完全匹配的订单。

有帮助吗?

2 个答案:

答案 0 :(得分:1)

查看您的代码似乎需要条件brand.name ='orion'和type ='A'的独特结果

select distinct orderID,product_name,brand,type 
from orders
where brand_name='orion' and type='A' 

答案 1 :(得分:1)

我想你想要

select orderID 
from orders
group by orderId
having sum(case when brand.name = 'orion' then 1 else 0 end) > 0 and
       sum(case when type = 'A' then 1 else 0 end) > 0;

我不知道brand.name指的是什么;查询中没有名为brand的表别名。