用于检查值的SQL脚本,如果找到,则将字段增加值1

时间:2013-05-08 21:41:20

标签: sql sum case temp-tables

我正在尝试编写一个脚本,该脚本将从名为“预订”的表中提取信息,其中包含一个列,该列给出了每个预订的长度,称为“小时”。该列中的值显示为1.0(60分钟),0.75(45分钟),0.5(30分钟)。我的脚本需要计算特定长度的预订量并返回值,所以例如我使用每个的Sum和Case语句......

SUM(case when Hours = 1 then 1 else 0 end) as '60 Mins',

SUM(case when Hours = 0.75 then 1 else 0 end) as '45 Mins',

SUM(case when Hours = 0.5 then 1 else 0 end) as '30 Mins',

SUM(case when Hours = 0.25 then 1 else 0 end) as '15 Mins'

我的问题是我需要记录超过60分钟的预订并将它们分成这四个组中的一个,例如1.5小时需要在60分钟的案例陈述中添加+1值,还有+1个计数到30分钟的案例陈述值,

我能想到的唯一方法是创建一个包含60,45,30和15个计数值列的临时表,然后如果找到结果则将此表更新为+1,这样1.25就会更新#temptable列(60)+1和列(15)+1。不知道怎么做,非常感谢。

由于

西蒙

1 个答案:

答案 0 :(得分:0)

看看这个sql fiddle。希望这足以让你开始。

select hours
       ,100*(hours - round(hours,0,1))
from table1

所以你的代码就像

SUM(case when hours - round(hours,0,1) = 0 then 1 else 0 end) as '60 Mins',

SUM(case when hours - round(hours,0,1) = 0.75 then 1 else 0 end) as '45 Mins',

SUM(case when hours - round(hours,0,1) = 0.5 then 1 else 0 end) as '30 Mins',

SUM(case when hours - round(hours,0,1) = 0.25 then 1 else 0 end) as '15 Mins'