这个ORACLE的库上班时间和下班时间是分开来的我怎么写一个SQL得到他每天的上下班时间

image.png

callie 发布于 2022-7-6 18:54
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
shirokoLv6资深互助
发布于2022-7-7 08:28(编辑于 2022-7-7 14:19)

SELECT 出勤日期,MEMBER,

MAX(CASE WHEN 打卡原因='上班' THEN 签到开始时间 ELSE null END) 上班签到开始时间,

MAX(CASE WHEN 打卡原因='下班' THEN 签到开始时间 ELSE null END) 下班开始时间 

FROM  表名

GROUP BY 出勤日期,MEMBER

  • callie callie(提问者) 这个报错了 签到开始时间那边 数据类型不一致,应为date,但却获得char
    2022-07-07 14:16 
  • shiroko shiroko 回复 callie(提问者) 改了
    2022-07-07 14:20 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-7-6 18:58

如果有打多次卡的呢。同一天。。。或者不打卡的。还有那种跨天的?你是想同一天,同一天。它的上班与下班分成两列吧?

最佳回答
0
2175926Lv1见习互助
发布于2022-7-7 06:31
使用嵌套查询,先查上班时间,再查下班时间,再把两个子查询通过内联结合并
最佳回答
0
Z~/Lv6初级互助
发布于2022-7-7 08:05

早上九点到晚上10点是什么神仙工作。

最佳回答
0
RedstarLv5初级互助
发布于2022-7-7 08:09
最佳回答
0
3143511Lv5中级互助
发布于2022-7-7 08:29

你说想上班时间一列,然后下班时间一列吗?利用with temp as然后再查:

with temp1 as (select 上班时间,签到日期,人员ID from 表),

temp2 as (select 下班时间,签到日期,人员ID from 表)select temp1.人员ID,temp1.签到日期,temp1.上班时间,temp2.下班时间 from temp1 inner join temp2 on temp1.人员ID = temp2.人员ID and temp1.签到日期 = temp2.签到日期

不知道这样能否满足你的需求

  • 6关注人数
  • 510浏览人数
  • 最后回答于:2022-7-7 14:19
    请选择关闭问题的原因
    确定 取消
    返回顶部