给定(Sat)的日期后,如何插入接下来6天(Sun-Fri)的记录

时间:2019-03-29 01:52:25

标签: sql oracle

我一周有1天的卡车运力,一周内将使用同一辆卡车,因此我想每天填充运力值。即我想通过在SQL查询中填充相同的容量值来将每周数据转换为每日数据

下面是数据样本

onAttachedToWindow()

预期结果:

Date                 capacity
6-Jan-2018      5.58
13-Jan-2018     4.6

2 个答案:

答案 0 :(得分:1)

使用以下几点(理解)为您提供解决方案。

  1. 从您的标签“ Oracle”开始,我假设您需要针对Oracle数据库的解决方案
  2. 您的描述我一周有1天的卡车运量,示例建议您在第一天就知道卡车的运量,这将是所有7天的运力(当前+下一个)六天)
WITH VW_DWC AS (SELECT LEVEL-1 DAY_COUNT FROM DUAL CONNECT BY LEVEL <= 7)
SELECT DT.DT_START + V.DAY_COUNT ON_DATE, DT.CAPACITY
FROM VW_DWC V CROSS JOIN ( 
  -- you can provide all your date, capacity pairs here as union all   
  SELECT to_date('06-Jan-2018', 'DD-MON-YYYY') DT_START, 5.58 AS CAPACITY from dual
  UNION ALL
  SELECT to_date('13-Jan-2018', 'DD-MON-YYYY') DT_START, 4.6 AS CAPACITY from dual
) DT
ORDER BY ON_DATE

和结果

enter image description here

答案 1 :(得分:0)

我假设您有一列来指示您所拥有的一周开始的每个日期的星期数。我们称之为week_no。然后,您可以使用带有标准connect by选项的简单prior sys_guid查询(以防止循环)

select t.dt+ level-1 as dt, t.capacity 
  from t connect by level <= 7
    and prior week_no = week_no
and prior sys_guid() is not null;

DEMO