안녕하세요.
환절기 모두 감기 조심하세요.
NO | PROJECT | PROJECT_SUB |
001 | AAA | AAA,BBB,CCC |
002 | DDD | DDD,EEE,FFF |
003 | GGG | GGG |
위와 같이 데이터가 들어가 있을 경우
SELECT NO, PROJECT, PROJECT_SUB FROM DUAL 하면 저렇게 표현됩니다.
저 상태에서 PROJECT_SUB의 데이터중에서 PROJECT의 값을 제외하고 PROJECT_SUB를 가져오고 싶습니다.
001 AAA BBB,CCC
002 DDD EEE,FFF
003 GGG
이렇게 표현하고 싶습니다. 가능할까요? 쿼리로..
WITH T(NO, PROJECT, PROJECT_SUB) AS ( SELECT '001', 'AAA', 'AAA,BBB,CCC' FROM DUAL UNION ALL SELECT '002', 'DDD', 'DDD,EEE,FFF' FROM DUAL UNION ALL SELECT '003', 'GGG', 'GGG' FROM DUAL UNION ALL SELECT '004', 'EEE', 'EEE,AAA,BBB,EEE,CCC,EEE' FROM DUAL ) SELECT T.NO, T.PROJECT, T.PROJECT_SUB, SUBSTR(REPLACE(',' || T.PROJECT_SUB, ',' || T.PROJECT, ''), 2) REPLACE_PROJECT_SUB FROM T
이러면 되지 않을까요?
SELECT no , project , project_sub , SUBSTR(REPLACE(CONCAT(',', project_sub), CONCAT(',', project), ''), 2) x FROM (SELECT '001' no, 'AAA' project, 'AAA,BBB,CCC' project_sub FROM dual UNION ALL SELECT '002', 'DDD', 'DDD,EEE,FFF' FROM dual UNION ALL SELECT '003', 'GGG', 'GGG' FROM dual UNION ALL SELECT '004', 'GGG', 'AAA,GGG' FROM dual ) a ;