我在将查询从MySQL转换为MSSQL时遇到问题。我的大多数错误都来自if语句,该语句应该看看我们在某一天剩下多少个工时。它检查该人是否尚未工作或当前正在工作,并添加他们安排的时间或他们离开工作的时间。
Round(Sum(IF(mon_endtime > Curtime(),IF(mon_starttime > Curtime(),mon_duration, (mon_endtime - Curtime()) / 10000), 0)),1) AS hours
mon_信息存储在employee表中。我知道MSSQL没有curtime(),并且我有一个变量来保存它,但我在使用以下代码获取正确数量时遇到问题:
declare @cur_time time;
declare @starttime time;
declare @endtime time;
set @cur_time = CONVERT(time, CURRENT_TIMESTAMP);
select @starttime = tue_starttime from employee;
select @endtime = tue_endtime from employee;
if (@endtime > @cur_time)
begin
if (@starttime > @cur_time)
begin
select sum(tue_duration) as hours from employee
end
else begin
select sum(datediff(hh,@cur_time,tue_endtime)) as hours from employee
end
end
else begin
select 0 as hours from employee
end
非常感谢任何帮助
答案 0 :(得分:1)
请尝试使用此CASE
语句:
ROUND(
SUM(
CASE WHEN (mon_endtime > Curtime())
THEN
CASE WHEN (mon_starttime > Curtime())
THEN mon_duration
ELSE ((mon_endtime - Curtime()) / 10000)
END
ELSE 0
END)
,1) AS Hours
(格式化,以便我能更好地理解声明!)