고수 님들께SQL 질문 드립니다. 0 4 989

by oratong [2016.12.11 21:03:19]


안녕하세요.

DBA_TAB_COLUMNS 등을 통해 아래와 같은 테이블을 만들었습니다.

owner table_name pk_cnt pk_col_nm1 pk_col_nm2 pk_col_nm3 pk_col_nm4 pk_col_nm5
hong emp 3 apa apb apc    
john dept 4 bpa bpb bpc bpd  
kim ks_code 2 cpa cpb      

목적은 해당 테이블을 통해서 일괄적인 SQL문장을 생성 하고자 하는것인데

다음과 같은 형태입니다.

SELECT apa^apb^apc from hong.emp;

SELECT bpa^bpb^bpc^bpd from john.dept;

SELECT cpa^cpb from kim.ks_code;

어려운 점은 pk_cnt 의 숫자 만큰 뒤에 컬럼을 '^' 구분자로 이어 주는것입니다.

고수분들의 조언 부탁 드립니다.

감사합니다.

 

 

 

 

by 우리집아찌 [2016.12.12 07:59:45]
그냥 저장할때 출력하시는거 처럼 만드시는게
http://www.gurubee.net/article/55512

by 마농 [2016.12.12 09:31:32]
WITH t(owner, table_name, pk_cnt, pk_col_nm1, pk_col_nm2, pk_col_nm3, pk_col_nm4, pk_col_nm5) AS
(
          SELECT 'hong', 'emp'    , 3, 'apa', 'apb', 'apc', ''   , '' FROM dual
UNION ALL SELECT 'john', 'dept'   , 4, 'bpa', 'bpb', 'bpc', 'bpd', '' FROM dual
UNION ALL SELECT 'kim' , 'ks_code', 2, 'cpa', 'cpb', ''   , ''   , '' FROM dual
)
SELECT owner, table_name, pk_cnt
     , 'SELECT '
    || RTRIM(
       pk_col_nm1||'^'||pk_col_nm2||'^'||pk_col_nm3||'^'||pk_col_nm4||'^'||pk_col_nm5
       , '^')
    || ' FROM ' || owner ||'.'|| table_name || ';'
    AS v_sql
  FROM t
;

 


by oratong [2016.12.12 09:45:55]

우리집아찌님 말씀 감사합니다. ㅎ

걸어주신 링크는 제가 질문 드린것과는 내용이 다르네요.

그리고 저장할때 출력하는거 처럼 만드는게 목적이 아니라서요.


by oratong [2016.12.12 09:47:49]

마농님 답변 감사드립니다...

항상 마농님의 SQL을 보면 정말 많은 공부가 됩니다.. 정말 감사합니다..ㅎ

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