我正在尝试计算数据库中每天的工作时间。我们的表格有2列与此相关。 InOut是具有1或0(1 =切入,0 =切入)的列,然后有punchdatetime。我如何使用这两个字段来计算每天工作多少小时。
我试图从打卡时间中减去打卡时间,但这不起作用。
select PunchMonth, PunchDay, PunchYear,
((PunchDateTime where InOut = 0) - (punchdatetime where InOut = 1))
from PunchClock
错误消息:关键字“ where”附近的语法不正确。
答案 0 :(得分:1)
您是否需要保护套(不是在哪里)
select PunchMonth
, PunchDay
, PunchYear
, case INOut = 0 then PunchDateTime else -PunchDateTime end
from PunchClock
答案 1 :(得分:0)
我认为您想要一个case
表达式。另外,由于给定的行的InOut
值是0
或1
,但不是两个都值,我认为您需要聚合。
所以,我猜:
select PunchMonth, PunchDay, PunchYear,
datediff(second, min(case when InOut = 0 then punchdatetime end),
max(case when InOut = 1 then punchdatetime end)
) as seconds_diff
from PunchClock
group by PunchMonth, PunchDay, PunchYear;