mysql - 如何将 MySql 联合查询的结果从 2 列拆分为 4

标签 mysql sql database select group-by

我正在执行这个 mysql 查询

select
    merchant_id, count(*)
from
    OrderDetails
where
    OrderDetails.delivery_date between '2019-07-24 00:00:00' and '2019-11-25 23:59:59' 
group by
    merchant_id

union all

select
    merchant_id, count(order_status_id)
from
    OrderDetails
where
    OrderDetails.delivery_date BETWEEN '2019-07-24 00:00:00' and '2019-11-25 23:59:59'
group by
    merchant_id, order_status_id
having
    order_status_id = 10

union

select
    merchant_id, count(order_status_id)
from
    OrderDetails
where
    OrderDetails.delivery_date between '2019-07-24 00:00:00' and '2019-11-25 23:59:59'
group by
    merchant_id, order_status_id
having
    order_status_id = 11;

但它会在两列中返回所有结果,我希望它在 4 中有,例如 idcountreturn已发送请提出任何建议

最佳答案

你需要sum()count(),你可以忽略你的union

select merchant_id
    , count(1)
    , sum(case when order_status_id = 10 then 1 else 0 end) as returned
    , sum(case when order_status_id = 11 then 1 else 0 end) as delivered
from  OrderDetails 
where delivery_date between '2019-07-24 00:00:00' and '2019-11-25 23:59:59' 
group by merchant_id 

关于mysql - 如何将 MySql 联合查询的结果从 2 列拆分为 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870567/

相关文章:

php - 查询始终仅返回最近添加的数据

mysql - 如果同一个表中的不同字段匹配两个不同的值,则列出相同的字段两次

将 WAR 文件部署到 Liferay 时未创建 SQL 表

c++ - cpp 快速访问磁盘上的二进制数据

java - 更改飞行路线的基线记录

mysql - 如何修改现有表以添加时区

php - cakephp 中的 mysql 函数

sql - ORA-00942:表或 View 不存在(当使用单独的sql时有效,但在oracle函数中不起作用)

sql - 如何为组 SQL Server 分配一个 id

mysql - sql查询性能不佳