我正在尝试编写一个脚本,该脚本将从名为“预订”的表中提取信息,其中包含一个列,该列给出了每个预订的长度,称为“小时”。该列中的值显示为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。不知道怎么做,非常感谢。
由于
西蒙
答案 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'