【问题标题】:How to expand records based on start and end date in SQL or PL/SQL如何在 SQL 或 PL/SQL 中根据开始和结束日期扩展记录
【发布时间】:2017-08-03 03:11:01
【问题描述】:

我的来源看起来像这样

ID    Name      Start_Date   End_ate
1     John      3-Aug-2017   30-Nov-2017
2     Nikhil    1-Jul-2017   31-Oct-2017

我想根据start_DateEnd_date 扩展这些记录,即对于上述源表中的每个条目,为START_DATEEND_DATE 之间的每一天返回一个单独的DATE_ID,就像这样

ID     Name    Date_ID
1      John    3-Aug-2017
1      John    4-Aug-2017
1      John    5-Aug-2017
.
.
.
1     John    30-Nov-2017
2     Nikhil  1-Jul-2017
2     Nikhil  2-Jul-2017
.
.
.
2    Nikhil  31-Oct-2017

由于每条记录的开始和结束日期不固定,所以我不确定如何实现。

提前致谢。

【问题讨论】:

  • 在这种类型的日期之间如何计算。如果它是日期时间格式,只有可能
  • 你的表名是什么?

标签: sql oracle plsql oracle11g


【解决方案1】:

在这里,将 [a] 替换为 [your_table_name] :

SELECT (a.Start_Date + ROWNUM - 1) Date_ID, a.ID, a.Name
  FROM all_objects, a
 WHERE ROWNUM <= TO_DATE(a.End_Date, 'dd-mon-yyyy') -
       TO_DATE(a.Start_Date, 'dd-mon-yyyy') + 1;

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    相关资源
    最近更新 更多