컬럼지우기 0 2 647

by 마은영 [2017.04.12 14:42:36]


쿼리입니다.

SELECT MAX(COL1) COL1 , 
       MAX(COL2) COL2 , 
       MAX(COL3) COL3 , 
       MAX(COL15) COL15 , 
       MAX(COL16) COL16  
  FROM 
       (SELECT
              DECODE(B.AAA_CODE, 10,B.AAA_NAME) COL1 , 
              DECODE(B.AAA_CODE, 15,B.AAA_NAME) COL2 , 
              DECODE(B.AAA_CODE, 16,B.AAA_NAME) COL3 , 
              DECODE(B.AAA_CODE, 04,B.AAA_NAME) COL15 , 
              DECODE(B.AAA_CODE, 17,B.AAA_NAME) COL16  
         FROM AT_DGNBAS B 
        WHERE 1=1 
              AND USE_NO ='Y' 
       ) 
 WHERE 1=1  

결과는 

col1 col2 col3 col15
1 2   3

이런식으로 나옵니다...

저 값이 없는 컬럼은 아예 삭제 할수 없는지요? col3 컬럼을 삭제 할수 없을까요?

 

by 마농 [2017.04.12 15:12:34]

레코드는 자료의 양에 따라 가변적일 수 있지만.
컬럼은 자료가 담기는 틀로써 고정 입니다.
가변으로 컬럼을 빼려면 정적 쿼리로는 안됩니다.
동적쿼리를 사용해야 합니다.
없는 자료가 안보여야 한다면?
컬럼으로 나열하지 말고 차라리 원본 그대로 아래로 나열하는 것이 나을 듯 하네요.


by jkson [2017.04.12 16:55:25]

rollup 같은 걸로 집계라인 만드시고 해당 집계라인의 특정 컬럼의 max값이 null일 때

프로그램단에서 안보이게 처리하시는 것도 괜찮을 것 같네요.

아.. 쿼리 자체가 저렇다면 한 줄로 나올테니 바로 해당 컬럼 null인지만 체크하면 되겠네요.

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