我有下表
ID | PARCEL | STATUS | ORDER_ID
1 1 PENDING 1234
2 2 COMPLETE 1234
3 1 COMPLETE 9999
4 2 PENDING 9999
5 3 PENDING 9999
6 1 COMPLETE 1111
7 2 COMPLETE 1111
8 3 COMPLETE 1111
9 1 COMPLETE 3333
10 2 PENDING 3333
我需要在第一个包裹待定并且包含多个包裹时获得结果。
我尝试使用sql:
SELECT * FROM table WHERE parcela = 1 AND status = 'pending'
group by order_id
having count(order_id) > 1
查询的答案是:
ID | PARCEL | STATUS | ORDER_ID
1 1 PENDING 1234
2 2 COMPLETE 1234
答案 0 :(得分:1)
您可以使用having
子句获取订单:
select order_id
from table
group by order_id
having count(order_id) > 1 AND
sum(case when parcela = 1 AND status = 'pending' then 1 else 0 end) > 0;
如果您需要详细信息,请将表格中的行重新加入order_id
。
您的查询的问题是您在where
子句中使用了一个过滤器,该过滤器将行限制为仅第一行。这可以防止查询计算每个顺序中的总行数。