数据
/*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
*/
先谢过
解决方案 »
- 新手求一SQL语句,查询属性重复的记录!
- 求一条SQL语句~~~高手帮帮忙~~~
- 邹老大,请教一下object_id问题,能取值linked server中的数据表吗?
- 百分求助,行变过程中如何处理特殊字符?
- 创建视图时,当一个字符字段为null或长度等于0时,返回false
- --数据库远程复制咋整啊?--
- 无法打开备份设备 'c:\aaa\a.bak'---------是什么意思
- 用SQLServer还是MySql?
- 上亿元的费用数据存储在什么类型的字段合适?
- 请各位大虾提供面向pb的招聘,在下一直在搞pb,我不想因为工作而放弃pb,大家帮帮忙!!!
- sqlserver 自增列ID最大值是多少?如果达到最大值,系统将如何处理?
- SQL 时间输入
总单数,就是count(NOID)无条件
已反馈单数,就是count(NOID) 条件 Kfdate is not null
未反馈单数,就是count(NOID) 条件Kfdate is null
超期单数,就是count(NOID)条件,cq<0
司机,
(select count(*) from table where Kfdate is not null and ID = t.ID),
(select count(*) from table where Kfdate is null and ID = t.ID),
(select count(*) from table where cq<0 and ID = t.ID)
from table t
group by ID,
司机,
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
*/