如何在计算中使用where子句创建计算字段

时间:2019-06-11 19:10:17

标签: sql sql-server

The image shows the table from this code: select * from PunchClock where punchmonth = 1 and PunchDay = 1 and PunchYear = 2018

我正在尝试计算数据库中每天的工作时间。我们的表格有2列与此相关。 InOut是具有1或0(1 =切入,0 =切入)的列,然后有punchdatetime。我如何使用这两个字段来计算每天工作多少小时。

我试图从打卡时间中减去打卡时间,但这不起作用。

select PunchMonth, PunchDay, PunchYear, 
      ((PunchDateTime where InOut = 0) - (punchdatetime where InOut = 1))
  from PunchClock

错误消息:关键字“ where”附近的语法不正确。

2 个答案:

答案 0 :(得分:1)

您是否需要保护套(不是在哪里)

select PunchMonth
  , PunchDay
  , PunchYear
  , case INOut = 0 then PunchDateTime else -PunchDateTime end
from PunchClock

答案 1 :(得分:0)

我认为您想要一个case表达式。另外,由于给定的行的InOut值是01,但不是两个都值,我认为您需要聚合。

所以,我猜:

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;