求一SQL预计谢谢!

bitls 2012-07-26 07:03:57

数据
/*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
*/
先谢过

...全文
55 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gw6328 2012-07-26
  • 打赏
  • 举报
回复

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
*/
shoppo0505 2012-07-26
  • 打赏
  • 举报
回复
select ID,
司机,
(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,
司机,
bitls 2012-07-26
  • 打赏
  • 举报
回复
解释一下,
总单数,就是count(NOID)无条件
已反馈单数,就是count(NOID) 条件 Kfdate is not null
未反馈单数,就是count(NOID) 条件Kfdate is null
超期单数,就是count(NOID)条件,cq<0

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧