MySql查询不同条件

MySql查询不同条件,mysql,sql,Mysql,Sql,我有这个桌子结构 yymm | orderid | itemid | price | qty | status 2011 | 123456 | ABC | 100 | 1 | completed 2011 | 123456 | DEF | 200 | 1 | completed 2010 | 112233 | ABC | 100 | 1 | cancelled 2010 | 112233 | DEF | 200 | 1 | canc

我有这个桌子结构

yymm | orderid | itemid | price | qty | status
2011 | 123456  | ABC    | 100   | 1   | completed
2011 | 123456  | DEF    | 200   | 1   | completed
2010 | 112233  | ABC    | 100   | 1   | cancelled
2010 | 112233  | DEF    | 200   | 1   | cancelled
我想知道完成和取消了多少不同的订单 我提出了这个问题,但这并不清楚

select date,
COUNT(IF(status = 'completed', 1, NULL)) AS completed,
COUNT(IF(status = 'cancelled', 1, NULL)) AS cancelled
from my_table
GROUP BY date
order by date
如何计算不同的顺序

预期的结果是

date | completed | cancelled
2011 | 1         | 0
2010 | 0         | 1
谢谢

使用countdistinct:

我更喜欢case而不是if,因为case是条件逻辑的SQL标准。

或者

select count(distinct order_id), date
from my_table
where status in ('completed','cancelled')
GROUP BY date
order by date

谢谢,我被错误地放在了不同的内部,比如COUNTIFstatus='completed',不同的orderid,NULL
select count(distinct order_id), date
from my_table
where status in ('completed','cancelled')
GROUP BY date
order by date