现在有一个统计表(departmentName,time,status(状态有三种))
我现在给出的有条件有 departmentName,startTime,endTime,
要选出每个departmentName,在开始和结束时间里面,的不同status的数量和在这个时间里面的总数,,,得到下表:
(部门名称,订单总数,未出货订单数,已出货订单数,以签收订单数)
求大神赐教!!!!
select 部门名称, sun(订单总数) , sun(未出货订单数) ,sun(已出货订单数),sun(以签收订单数), from a where startTime<=time and endTime>=time group by departmentName,status
select departmentName 部门名称, sum(0) 订单总数, sum(case state when 0 then 1) 未出货订单数,sum(case state when 1 then 1) 已出货订单数,sum(case state when 2 then 1) 以签收订单数, from table where startTime<=time and endTime>=time group by departmentName
state 中0表示 未出货订单数
中1表示 已出货订单数
中2表示 以签收订单数
把上面的答案修改下就可以了
假设表名为t
state 中0表示 未出货订单数
中1表示 已出货订单数
中2表示 以签收订单数
SELECT DEPARTMENTNAME AS 部门名称,
COUNT(*) AS 订单总数,
SUM(CASE STATUS
WHEN 0 THEN
1
ELSE
0
END) AS 未出货订单数,
SUM(CASE STATUS
WHEN 1 THEN
1
ELSE
0
END) 已出货订单数,
SUM(CASE STATUS
WHEN 2 THEN
1
ELSE
0
END) 已签收订单数
FROM T
WHERE TIME BETWEEN STARTTIME AND ENDTIME
GROUP BY DEPARTMENTNAME
ORDER BY DEPARTMENTNAME;