首页 新闻 搜索 专区 学院

写一个复杂的SQL语句查询出 整个表中超期的业务数据。

0
悬赏园豆:20 [已解决问题] 解决于 2012-10-11 10:58

根据某个字段的不同 where的条件也同

 

字段有 LoginName,WorkEndTime工作结束时间,SetTime 期限,WorkSate状态(处理中,待办,已处理,办结)

select LoginName,count(*) as st from ccrm_service  as cs  where 。。。。。。。。

加个条件,完成查询(如果WorkState 为 处理中或待办 状态 则 使用条件 为时间段1<SetTime    ,SetTime>时间段2  ,如果WorkState 为已处理,或办结 则表面工作已完成 使用的where条件为 WorkEndTime>时间段1 , WorkEndTime<时间段2)

问题补充:

似乎要 在SQL 语句中用到 if else ,求详细说明。

Shang0109的主页 Shang0109 | 初学一级 | 园豆:50
提问于:2012-10-10 15:45
< >
分享
最佳答案
1
 1 IF EXISTS(SELECT * FROM tempdb.dbo.sysobjects WHERE id=OBJECT_ID(N'tempdb..#ccrm_service') AND type='U')
 2     DROP TABLE #ccrm_service
 3 ELSE
 4     CREATE TABLE #ccrm_service
 5     (
 6         ID INT IDENTITY(1,1) NOT NULL,
 7         LoginName VARCHAR(50) NOT NULL,
 8         WorkEndTime DATETIME NOT NULL,
 9         SetTime DATETIME NOT NULL,
10         WorkState INT NOT NULL --1处理中,2待办,3已处理,4办结
11     )
12     DECLARE @i INT
13     SET @i=0
14     WHILE(@i<1000)
15         BEGIN
16             INSERT INTO #ccrm_service VALUES(CAST(CEILING(RAND()*4) AS VARCHAR(2)),DATEADD(DAY,-@i,GETDATE()),DATEADD(DAY,-@i,GETDATE()),CAST(CEILING(RAND()*4) AS INT))
17             SET @i=@i+1
18         END
19     SELECT LoginName,SUM(Total) Total
20     FROM(
21         SELECT LoginName,COUNT(*) AS Total FROM #ccrm_service WHERE WorkState IN(1,2) AND SetTime>'2012-05-05' AND SetTime<'2012-10-10' GROUP BY LoginName
22         UNION
23         SELECT LoginName,COUNT(*) AS Total FROM #ccrm_service WHERE WorkState IN(1,2) AND WorkEndTime>'2012-05-05' AND WorkEndTime<'2012-10-10' GROUP BY LoginName
24         )
25     AS tb
26     GROUP BY LoginName

一楼那样也可以,也可以用UNION

收获园豆:10
xu_happy_you | 菜鸟二级 |园豆:222 | 2012-10-10 16:28

非常感谢!不知道很多地方 加# 是什么意思?

Shang0109 | 园豆:50 (初学一级) | 2012-10-10 17:08

@Shang0109: 临时表,因为我本地没有你那表的环境,所以就弄了个临时表 

#ccrm_service
xu_happy_you | 园豆:222 (菜鸟二级) | 2012-10-11 08:59
其他回答(1)
0

where ((WorkSate='处理中' or WorkSate='待办' ) and 时间段1<SetTime and SetTime>时间段2) or ((WorkState='已处理' or WorkState='办结') and WorkEndTime>时间段1 and WorkEndTime<时间段2)

收获园豆:10
向往-SONG | 园豆:4853 (老鸟四级) | 2012-10-10 16:26

这个我尝试了,但没有查出结果。

支持(0) 反对(0) Shang0109 | 园豆:50 (初学一级) | 2012-10-10 17:05

非常感谢!这个我尝试了,但没有查出结果。

支持(0) 反对(0) Shang0109 | 园豆:50 (初学一级) | 2012-10-10 17:06

@Shang0109: 

应该可以吧,你去掉一些条件调一调,看是怎么出不来。

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-10-10 17:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册