根据日期差异重复行

问题描述

需要帮助。我从oracle导入到tableau有一组数据用于计算。但是为了做到这一点,我需要复制下表中所示的图表。例如,如果在开始和结束之间有日期差异,那么我需要复制它并根据有多少日期差异分配代码0,1。目的是我需要在Tableau中使用此函数进行时间间隔计算。谢谢

enter image description here

解决方法

预先生成最大可能值的代码,并将原始表加入代码序列,以便根据特定行上日期之间的差来确定行重复次数:

with t (s,e) as (
  select timestamp '2020-08-16 18:30:00',timestamp '2020-08-16 20:00:00' from dual union all
  select timestamp '2020-08-17 08:00:00',timestamp '2020-08-18 08:00:00' from dual union all
  select timestamp '2020-08-19 08:00:00',timestamp '2020-08-19 00:00:00' from dual union all
  select timestamp '2020-08-20 10:00:00',timestamp '2020-08-22 03:00:00' from dual
),series (code) as (
  select level - 1 from dual connect by level <= (select count(*) from t)
)
select t.*,series.code
from t
join series on trunc(e) - trunc(s) >= series.code
order by s,code;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...