sql 整理

这个博客介绍了如何创建和管理SQL数据库表,包括创建`CELLOL.TAPS_CT_SRC_GRP_MSTR`和`CELLOL.TAPS_CT_SRC_GRP_MPG`两个表,并展示了如何通过递归查询构造层级关系,以及进行数据插入和更新操作。此外,还涉及到了数据的合并(MERGE)操作。
摘要由CSDN通过智能技术生成

CREATE TABLE `CELLOL.TAPS_CT_SRC_GRP_MSTR` (
  `SRC_GRP_ID` varchar(50),
  `SRC_GRP_NM` varchar(100),
  `SRC_GRP_LEVEL` varchar(30),
  `PARENT_SRC_GRP_ID` varchar(50),
  'DEL_YN' varchar(1),
  'INS_PERSON_ID' varchar(50),
  'INS_DTM' TIMESTAMP(10),
  'UPD_PERSON_ID' varchar(50),
  'UPD_DTM' TIMESTAMP(10),
) primary key SRC_GRP_ID

 

CREATE TABLE `CELLOL.TAPS_CT_SRC_GRP_MPG` (
  `LSS_ID` varchar(50),
  `SRC_GRP_ID` varchar(50),
  `SRC_GRP_LEVEL1` varchar(30),
  `SRC_GRP_LEVEL2` varchar(30),
  `SRC_GRP_LEVEL3` varchar(30),
  `SRC_GRP_LEVEL4` varchar(30),
  `SRC_GRP_LEVEL5` varchar(30),
  `USE_YN` varchar(1),
  'DEL_YN' varchar(1),
  'INS_PERSON_ID' varchar(50),
  'INS_DTM' TIMESTAMP(10),
  'UPD_PERSON_ID' varchar(50),
  'UPD_DTM' TIMESTAMP(10),
) primary LSS_ID,SRC_GRP_ID


WITH TEMP_TAB(SRC_GRP_ID,SRC_GRP_LEVEL,PARENT_SRC_GRP_ID,PATH) as(
    SELECT SRC_GRP_ID,TO_NUMBER(SRC_GRP_LEVEL) as SRC_GRP_LEVEL,PARENT_SRC_GRP_ID,SRC_GRP_ID as PATH
    from CELLOL.TAPS_CT_SRC_GRP_MSTR
    where SRC_GRP_LEVEL=1 AND DEL_YN='N'
    union all
    select A.SRC_GRP_ID,B.SRC_GRP_LEVEL+1 as SRC_GRP_LEVEL,A.PARENT_SRC_GRP_ID,B.PATH||'||'||A.SRC_GRP_ID AS PATH
    from CELLOL.TAPS_CT_SRC_GRP_MSTR A,TEMP_TAB B
    where A.PARENT_SRC_GRP_ID=B.SRC_GRP_ID
    AND DEL_YN='N'
)
,SRC_GRP AS (
    select SRC_GRP_ID,SRC_GRP_LEVEL,PATH
    SUBSTR(PATH,1,3) as SRC_GRP_LEVEL1,
    SUBSTR(PATH,6,8) as SRC_GRP_LEVEL2,
    SUBSTR(PATH,16,8) as SRC_GRP_LEVEL3
    from TEMP_TAB
)
,SRC_MAP_MASTER AS(
    SELECT A.SRC_GRP_LEVEL1,L1.SRC_GRP_NM as SRC_GRP_LEVEL1_NM,
    A.SRC_GRP_LEVEL2,L2.SRC_GRP_NM as SRC_GRP_LEVEL2_NM,
    A.SRC_GRP_LEVEL3,L3.SRC_GRP_NM as SRC_GRP_LEVEL3_NM
    from SRC_GRP A,
    CELLOL.TAPS_CT_SRC_GRP_MSTR L1,
    CELLOL.TAPS_CT_SRC_GRP_MSTR L2,
    CELLOL.TAPS_CT_SRC_GRP_MSTR L3
    where A.SRC_GRP_LEVEL=3
    AND A.SRC_GRP_LEVEL1 = L1.SRC_GRP_ID
    AND L1.DEL_YN='N'
    AND A.SRC_GRP_LEVEL2 = L2.SRC_GRP_ID
    AND L2.DEL_YN='N'
    AND A.SRC_GRP_LEVEL3 = L3.SRC_GRP_ID
    AND L3.DEL_YN='N'
    order by SRC_GRP_LEVEL1_NM,SRC_GRP_LEVEL2_NM,SRC_GRP_LEVEL3_NM)
select 'KOREA' as AREA_NM,'T100' as LSS_ID,'SDSK' as LSS_NM
MSTR.SRC_GRP_LEVEL1,MSTR.SRC_GRP_LEVEL1_NM,
MSTR.SRC_GRP_LEVEL2,MSTR.SRC_GRP_LEVEL2_NM,
MSTR.SRC_GRP_LEVEL3,MSTR.SRC_GRP_LEVEL3_NM,
NVL(MPG.USE_YN,'N') as USE_YN
from SRC_MAP_MASTER MSTR left join CELLOL.TAPS_CT_SRC_GRP_MPG MPG
on MPG.SRC_GRP_ID = MSTR.SRC_GRP_LEVEL3 and MPG.LSS_ID = MSTR.LSS_ID

 

 


insert into  CELLOL.TAPS_CT_SRC_GRP_MSTR(SRC_GRP_ID,SRC_GRP_NM,SRC_GRP_LEVEL,PARENT_SRC_GRP_ID,DEL_YN) values
('AIR','Air Trans','1',null,'N')
insert into  CELLOL.TAPS_CT_SRC_GRP_MSTR(SRC_GRP_ID,SRC_GRP_NM,SRC_GRP_LEVEL,PARENT_SRC_GRP_ID,DEL_YN) values
('SG000681','Air(PROD-Dont Delete)','2','AIR','N')
insert into  CELLOL.TAPS_CT_SRC_GRP_MSTR(SRC_GRP_ID,SRC_GRP_NM,SRC_GRP_LEVEL,PARENT_SRC_GRP_ID,DEL_YN) values
('SG000683','Equipment(PROD)','3','SG000681','N')
insert into  CELLOL.TAPS_CT_SRC_GRP_MSTR(SRC_GRP_ID,SRC_GRP_NM,SRC_GRP_LEVEL,PARENT_SRC_GRP_ID,DEL_YN) values
('SG000684','Express(PROD)','3','SG000681','N')
insert into  CELLOL.TAPS_CT_SRC_GRP_MSTR(SRC_GRP_ID,SRC_GRP_NM,SRC_GRP_LEVEL,PARENT_SRC_GRP_ID,DEL_YN) values
('SG000682','General(PROD)','3','SG000681','N')

 


MERGE INTO CELLOL.TAPS_CT_SRC_GRP_MPG T
USING(
    select #{lssId} as LSS_ID,
    #{srcGrpLevel03} as SRC_GRP_ID,
    #{srcGrpLevel01} as SRC_GRP_LEVEL1,
    #{srcGrpLevel02} as SRC_GRP_LEVEL2,
    #{srcGrpLevel03} as SRC_GRP_LEVEL3,
    #{useYn} AS USE_YN,
    'N' as DEL_YN,
    #{userId} as USER_ID
    from dual
)SRC
on (T.LSS_ID=SRC.LSS_ID AND T.SRC_GRP_ID=SRC.SRC_GRP_ID)
WHEN MATCHED THEN UPDATE
   set T.USE_YN=SRC.USE_YN,T.UPD_PERSON_ID=SRC.USER_ID,T.UPD_DTM=SYSDATE
WHEN NOT MATCHED THEN
   insert (T.LSS_ID,T.SRC_GRP_ID,T.SRC_GRP_LEVEL1,T.SRC_GRP_LEVEL2,T.SRC_GRP_LEVEL3,T.USE_YN,T.DEL_YN,T.INS_PERSON_ID,T.INS_DTM)
   values
   (SRC.LSS_ID,SRC.SRC_GRP_ID,SRC.SRC_GRP_LEVEL1,SRC.SRC_GRP_LEVEL2,SRC.SRC_GRP_LEVEL3,SRC.USE_YN,SRC.DEL_YN,SRC.USER_ID,SYSDATE)  
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值