我正在尝试计算数据库中每天工作的小时数。我们的表有2列与此相关。InOut是一个包含1或0 (1 =打卡时间,0=打卡时间)的列,然后是punchdatetime。我如何使用这两个字段来计算每天工作的小时数。
我试着从打卡超时中减去打卡时间,但这行不通。
select PunchMonth, PunchDay, PunchYear,
((PunchDateTime where InOut = 0) - (punchdatetime where InOut = 1))
from PunchClock
错误消息:关键字“where”附近的语法不正确。
发布于 2019-06-12 03:14:23
可能是您需要的案例(而不是在哪里)
select PunchMonth
, PunchDay
, PunchYear
, case INOut = 0 then PunchDateTime else -PunchDateTime end
from PunchClock
发布于 2019-06-12 03:13:00
我认为您需要一个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;
https://stackoverflow.com/questions/56550343
复制相似问题