这个语句应该怎么写?

abz980 2013-09-07 05:31:09


tableC
Id MustCompleteOfTime State
1 2013-09-01 0
2 2013-09-01 1
3 2013-09-01 0
4 2013-09-02 1
5 2013-09-04 1
6 2013-09-04 1
7 2013-09-05 0
8 2013-09-05 0
9 2013-09-09 1
10 2013-09-09 1
11 2013-09-20 1
12 2013-09-21 0
13 2013-09-24 1
14 2013-09-24 1
15 2013-09-27 0


tableC数据库表里显示的是一个员工在9月份的15个任务的完成情况

tableC的Id字段表示每一任务的Id,MustCompleteOfTime这个字段的含义是规定要执行的任务的日期,State字段的含义是任务完成的情况(0表示未完成,1表示完成)

我想统计这个员工在9月份的任务完成的情况

比如在2013-09-01这个员工规定要完成3个任务,其中有2个任务没完成,只完成了1个任务(有2条数据State值为0,1条数据的State值1),那么这个员工在2013-09-01这一天的任务就算未完成(意思就是哪怕这个员工在2013-09-01这一天完成了99个任务,但是这个员工规定要在2013-09-01完成100个任务,只要在这一天里有1个任务没完成,那么这个员工在2013-09-01这一天的任务就算未完成,在统计出结果中的Result值就应该为未完成)

又比如在2013-09-24这一天这个员工规定要完成2个任务,2个任务都完成了(2条数据的State值都为1),那么这个员工在2013-09-24这一天的任务就算完成了,在统计出结果中的Result值就应该为完成,
还有,9月份中没任务的日期就不要统计出来,只统计有任务的日期

最终统计出的结果应该是这样的:

Day Result
2013-09-01 未完成
2013-09-02 完成
2013-09-04 完成
2013-09-05 未完成
2013-09-09 完成
2013-09-20 完成
2013-09-21 未完成
2013-09-24 完成
2013-09-27 未完成

请问这个语句应该怎么写?
...全文
55 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy__Huang 2013-09-07
  • 打赏
  • 举报
回复

create table #tableC(Id int,MustCompleteOfTime datetime, State int)
insert into #tableC
select 1,'2013-09-01',0
union all select 2,'2013-09-01',1
union all select 3,'2013-09-01',0
union all select 4,'2013-09-02',1
union all select 5,'2013-09-04',1
union all select 6,'2013-09-04',1
union all select 7,'2013-09-05',0
union all select 8,'2013-09-05',0
union all select 9,'2013-09-09',1
union all select 10,'2013-09-09',1
union all select 11,'2013-09-20',1
union all select 12,'2013-09-21',0
union all select 13,'2013-09-24',1
union all select 14,'2013-09-24',1
union all select 15,'2013-09-27',0

select MustCompleteOfTime as [Day] ,case when [count]=total then '已完成' else '未完成' end Result
from 
(
select CONVERT(varchar(10),MustCompleteOfTime,120) as MustCompleteOfTime,COUNT(*) as [count],SUM(State) as total
from #tableC
group by CONVERT(varchar(10),MustCompleteOfTime,120)
)t

/*
Day	     Result
-------------------------
2013-09-01	未完成
2013-09-02	已完成
2013-09-04	已完成
2013-09-05	未完成
2013-09-09	已完成
2013-09-20	已完成
2013-09-21	未完成
2013-09-24	已完成
2013-09-27	未完成
*/
Andy__Huang 2013-09-07
  • 打赏
  • 举报
回复
select MustCompleteOfTime as [Day],case when [count]=total then '已完成' else '未完成' end Result
from
(
select CONVERT(varhcar(10),MustCompleteOfTime,120) as MustCompleteOfTime,COUNT(*) as [count],SUM(State) as total
from tableC
group by CONVERT(varhcar(10),MustCompleteOfTime,120)
)t

34,838

社区成员

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

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