如何解决如何在 Oracle SQL 中将持续时间拆分为每小时间隔?
我在一个表中有一个用户登录和注销时间的输入表,我需要将输出拆分为每小时的时间间隔。
预先感谢您的任何帮助
这是创建表格的代码片段:
CREATE TABLE table_name (
userid varchar(255),date_capture DATE,login_hour int,logout_hour int
);
这是测试数据:
INSERT INTO table_name(userid,date_capture,login_hour,logout_hour)
VALUES ('Test1','02-JUN-2020',6,9);
INSERT INTO table_name (userid,logout_hour)
VALUES ('Test2',3,4);
这是预期的输出:
解决方法
您可以使用 cte 递归添加一个小时,直到达到目标:
with cte(userid,date_capture,login_hour,logout_hour,target) as (
select userid,login_hour + 1,logout_hour
from table_name
union all
select userid,logout_hour + 1,target
from cte
where logout_hour + 1 <= target
)
select userid,logout_hour
from cte
order by userid,login_hour;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。