34,576
社区成员
发帖
与我相关
我的任务
分享
数据
/*ID 城市 单号 司机 客户反馈日期 超期 类型
ID City NOID driver Kfdate cq type
1 潮州 120202000397 B司机 2012/2/7 0:00 9999 人工确认
2 潮州 120203000560 A司机 2012/2/6 0:00 9999 人工确认
3 潮州 120205000504 B司机 2012/2/10 0:00 9999 人工确认
4 潮州 120206000440 C司机 2012/2/10 0:00 9999 人工确认
5 潮州 120207001896 B司机 2012/2/9 0:00 9999 人工确认
6 东莞 120205000522 C司机 null -1 null
7 东莞 120206002879 A司机 null -2 null
8 东莞 120207003802 B司机 null -2 null
*/
查询得出以下结果
/*ID 司机 总单数 已反馈单数 未反馈单数 超期单数
1 A司机 2 1 1 1
2 B司机 4 3 1 1
3 C司机 2 1 1 1
*/
先谢过
declare @t table(司机 varchar(10),反馈日期 datetime,超期 int);
insert into @t select 'B司机','2012/2/7 0:00',9999 union all
select 'A司机','2012/2/6 0:00',9999 union all
select 'B司机','2012/2/10 0:00',9999 union all
select 'C司机','2012/2/10 0:00',9999 union all
select 'B司机','2012/2/9 0:00',9999 union all
select 'C司机',NULL,-1 union all
select 'A司机',NULL,-2 union all
select 'B司机',NULL,-2
select 司机,COUNT(1) as 总单数
,COUNT(反馈日期) as 已反馈单数
,sum(case when 反馈日期 IS null then 1 else 0 end) as 未反馈
,SUM(case when 超期<0 then 1 else 0 end) as 超期 from @t
group by 司机
/*
司机 总单数 已反馈单数 未反馈 超期
---------- ----------- ----------- ----------- -----------
A司机 2 1 1 1
B司机 4 3 1 1
C司机 2 1 1 1
*/