首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

count(*) 计算下井次数,该怎么解决

2014-05-31 
count(*) 计算下井次数select distinct e.name,d.name,count(e.name)as 下井次数from attendance a ,emplo

count(*) 计算下井次数
select distinct e.name,d.name,count(e.name)as 下井次数

from attendance a ,employee e,department d

where a.cardNum=e.cardnumber and d.id=e.departmentId
and a.occDay between 20131213 and 20131222 and
 datediff(hour,a.inTime,a.outTime)>2
group by e.name,d.name


码农我根据e.name出现的次数 来统计下井次数。
可是现在业务出现新情况 datediff(hour,a.inTime,a.outTime)>2 算 一次下井
2<datediff(hour,a.inTime,a.outTime)<12算 1.5次 
datediff(hour,a.inTime,a.outTime)>12算 2次 下井 
那么此sql怎么改动呢?


[解决办法]

select distinct e.name,d.name,
sum(case when datediff(hour,a.inTime,a.outTime)>2 then 1
         when 2<datediff(hour,a.inTime,a.outTime)<12 then 1.5
         when datediff(hour,a.inTime,a.outTime)>12 then 2
         else 0
    end)as 下井次数

from attendance a ,employee e,department d

where a.cardNum=e.cardnumber and d.id=e.departmentId
and a.occDay between 20131213 and 20131222 
--and datediff(hour,a.inTime,a.outTime)>2
group by e.name,d.name

热点排行