oracle 展开日期并插入到另一个表中[已关闭]

mutmk8jj  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(109)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

5天前关闭。
此帖子4天前编辑并提交审核,未能重新打开帖子:
原始关闭原因未解决
Improve this question
需要展开表部件的第二行并插入表fct表。表1:- Part表2:- fct不依赖于A列,B列将在查询中以b的形式出现,如'%MT'

Part 
    
    a       b           c           d           e       f     g     
    
    600   MT_000        6765    29-04-22    30-04-22    1   WEEK
          MT            6758    01-05-22    31-05-22    1   MONTH
    601   MT_0001       6771    01-06-22    30-06-22    1   WEEK
    
    

want like this

FCT

a      b               c       d            e              f       g   
  600      MT_000               6765    30-04-22    30-04-22    1   WEEK
           MT           6758    01-05-22    07-05-22    1   MONTH
        MT          6758    08-05-22    14-05-22    1   MONTH      
        MT          6758    15-05-22    21-05-22    1   MONTH      
        MT          6758    22-05-22    28-05-22    1   MONTH      
        MT          6758    29-05-22    31-05-22    1   MONTH   
        MT          6758    01-06-22    02-06-22    1   WEEK
mw3dktmi

mw3dktmi1#

你可以像下面这样对月类型的行应用递归子查询生成周:

select a, b, c, case g when 'MONTH' then d1 else d end d, least(d2, e) e, f, g
from fct
cross apply (
  select trunc(d, 'mm') + (level - 1) * 7 d1, trunc(d, 'mm') + level * 7 - 1 d2
  from dual 
  connect by g = 'MONTH' and trunc(d, 'mm') + (level - 1) * 7 <= e )

dbfiddle

相关问题