首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在计算中使用where子句创建计算字段

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

Stack Overflow用户
提问于 2019-06-12 03:10:18
回答 2查看 49关注 0票数 0

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。我如何使用这两个字段来计算每天工作的小时数。

我试着从打卡超时中减去打卡时间,但这行不通。

代码语言:javascript
复制
select PunchMonth, PunchDay, PunchYear, 
      ((PunchDateTime where InOut = 0) - (punchdatetime where InOut = 1))
  from PunchClock

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

EN

回答 2

Stack Overflow用户

发布于 2019-06-12 03:14:23

可能是您需要的案例(而不是在哪里)

代码语言:javascript
复制
select PunchMonth
  , PunchDay
  , PunchYear
  , case INOut = 0 then PunchDateTime else -PunchDateTime end
from PunchClock
票数 1
EN

Stack Overflow用户

发布于 2019-06-12 03:13:00

我认为您需要一个case表达式。另外,因为给定行的InOut值是01,而不是两者都有,所以我认为您需要聚合。

所以,我猜:

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56550343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档