Oracle-SQL:选择两个日期之间的每日计数(项目)

时间:2016-06-10 06:09:15

标签: sql oracle select

我需要将具有指定日期范围(STARTDATEENDDATE)的行分散到多个行中,并且该行具有该范围的连续日期。请参阅下面的图片

enter image description here

以下是数据的示例

> MODELCD  PRODUCTCD  PROCESSCD  LS_PROCESSCD  EST_STARTDATE  EST_ENDDATE
   P9218   22186844   15VV2111    DS            21/12/2015     10/1/2016
   P9218   22269836   15VV2121    MC            23/2/2016      21/3/2016
   P9218   22186844   15VV2111    MC            9/2/2016       7/3/2016

预期结果如下所示

 MODELCD  PRODUCTCD  PROCESSCD  LS_PROCESSCD  PROCESS_DATE  
 P9218    22186844   15VV2111   DS            21/12/2015     
 P9218    22186844   15VV2111   DS            22/12/2015
 P9218    22186844   15VV2111   DS            23/12/2015
   '         '         '        '               '
   '         '         '        '               '
   '         '         '        '               '
 P9218   22186844   15VV2111    DS            10/01/2016
 P9218   22269836   15VV2121    MC            23/2/2016      
 P9218   22269836   15VV2121    MC            24/2/2016
   '         '         '         '                '
   '         '         '         '                '
   '         '         '         '                '
 P9218   22269836   15VV2121    MC            21/3/2016

1 个答案:

答案 0 :(得分:0)

    SELECT t.ModelCD,
           t.PART,
           t.JOBNO,
           t.PROCESSCD,
           STARTDATE + LEVEL
   FROM Table t
   WHERE PROCESSCD = 'DS.'
   CONNECT BY LEVEL <= ENDDATE - STARTDATE;