코드화에서 코드명 가지고 오기 1 9 9,261

by 정원섭 [SQL Query] 논리적 구조 [2015.02.02 15:15:34]


안녕하세요

 

다름이 아니라 개발 중에  속도가 안나와서  여쭤볼것이 있어서 글을 적습니다.

-1, 내용 : A 컬럼 : ABC,BCD,CDE 이렇게 되어있는 것을  기타1,기타2,기타3으로 나오게 하고 싶은데요

(com_code)  공통 코드 부분에 정의는 되어있는 상태입니다.

펑션이나 내부 함수고 나오게 할수 있는 방법이 있을까요 ?

 

많은 관심 부탁드리겠습니다.

 

 

 

 

 

by 아발란체 [2015.02.02 15:35:34]
-- ㅎㅎ 찍어서
SELECT
   (SELECT code_name FROM 공통코드테이블 WHERE com_code = MT.data_field_name AND ROWNUM = 1)
FROM
   DATA_TABLE_NAME MT

 


by 정원섭 [2015.02.02 15:37:56]

코드테이블에 ABC = 기타1, BCD = 기타2 , CDE = 기타 3으로 되어있습니다. 하나의 컬럼에 나오도록 하려고 하는데 어떻게 하면 될까요

 


by 아발란체 [2015.02.02 15:41:52]

음.. 한 속성에 "ABC, BCD" 식으로 2개 값이 있을 수 있다는 것인가용? @.@


by 정원섭 [2015.02.02 15:43:22]

예 그렇게 갑이 들어갈수 있습니다.

 


by jkson [2015.02.02 15:57:34]
WITH T AS
(
SELECT 'ABC,BCD,CDE' VAL, 1 SEQ FROM DUAL
UNION ALL
SELECT 'DEF,EFG,FGH' VAL, 2 SEQ FROM DUAL
)
,
T1
AS
(SELECT 'ABC' CODE, '기타1' NM FROM DUAL
UNION ALL
SELECT 'BCD' CODE, '기타2' NM FROM DUAL
UNION ALL
SELECT 'CDE' CODE, '기타3' NM FROM DUAL
UNION ALL
SELECT 'DEF' CODE, '기타4' NM FROM DUAL
UNION ALL
SELECT 'EFG' CODE, '기타5' NM FROM DUAL
UNION ALL
SELECT 'FGH' CODE, '기타6' NM FROM DUAL
)
SELECT SEQ, LISTAGG(T1.NM,',')  WITHIN GROUP(ORDER BY LV) NM 
  FROM
    (
    SELECT REGEXP_SUBSTR(VAL,'[^,]+',1,LV) CODE, LV, SEQ 
      FROM T,
          (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL < 20)-- 콤마 구분자가 올 수 있는 최대값
     WHERE LV <= REGEXP_COUNT(VAL,',') + 1
    ) A, T1
 WHERE  A.CODE = T1.CODE
 GROUP BY SEQ

원하시는 게 맞는지 모르겠네요.


by 정원섭 [2015.02.02 16:08:44]

감사합니다.


by 마농 [2015.02.02 16:43:24]
SELECT a.seq, a.val
     , LISTAGG(b.nm, ',') WITHIN GROUP(ORDER BY INSTR(','||a.val||',', ','||b.code||',')) nm
  FROM t  a
     , t1 b
 WHERE INSTR(','||a.val||',', ','||b.code||',') > 0
 GROUP BY a.seq, a.val
 ORDER BY a.seq
;

 


by 백면서생 [2015.02.02 17:00:47]
-- 나도 한번 ^^
-- jkson님 set 도용

SELECT SEQ 
    ,(SELECT LISTAGG(B.NM, ',') WITHIN GROUP(ORDER BY INSTR(A.VAL, B.CODE)) 
      FROM T1 B WHERE INSTR(A.VAL, B.CODE) > 0) STR
FROM T A

 


by jkson [2015.02.02 17:18:51]

우앙~ 열라 간단하네요~ 저 같은 초짜 답변이랑 질이 다르네요^^; 코드 테이블 크기가 어느 정도냐에 따라 골라서 쓰시면 되겠네요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입