가로로 늘여서 출력할때 값이 없으면 숨기기(?) 가능할까요? 0 2 2,121

by 페이즈 [SQL Query] [2010.03.22 15:40:54]



select
    SUM(PN_T) "합계",
    SUM(CASE WHEN DEPT_CD = '0' THEN PN_T END) "국문",
    SUM(CASE WHEN DEPT_CD = '1' THEN PN_T END) "영문",
    SUM(CASE WHEN DEPT_CD = '2' THEN PN_T END) "중문",
    SUM(CASE WHEN DEPT_CD = '3' THEN PN_T END) "불문",
    SUM(CASE WHEN DEPT_CD = '4' THEN PN_T END) "일본",
    MAX(UPDT_DTTM) "수정일"
from T_TABLE
group by  DEPT_CD
order by  DEPT_CD


위 처럼 쿼리를 사용합니다.

문제는 합계를 구하는것인데~ 

불문에 SUM 값이 0 이면~

국문, 영문, 중문, 일본 만 가로로 출력되고 불문이 빠져서 화면에 보여주고 싶은데~

어떻게 해야 가능할까요???

조언 부탁 드립니다.
by 마농 [2010.03.22 16:16:17]
우선 출력 형태를 알아야 합니다.
1. 쿼리결과를 가져다가 프로그래밍을 통해 화면 출력하는거라면
=> 프로그래밍을 통해 화면을 동적으로 구성하시면 됩니다.
2. 쿼리결과를 화면으로 자동 가공하여 주는 형태라면?
=> 쿼리 자체를 동적으로 구성하여 실행해주시면 됩니다.

동적쿼리 나 Dynamic SQL 등으로 검색해 보세요.

by v상이v [2010.03.22 16:24:23]
어디까지나 제가 알기론 가로축 컬럼의 조절을 쿼리에선 불가능한걸로 알고 있습니다.
Dynamic 쿼리라면 쿼리 자체를 변형할수 있기에 가능합니다만...
그렇게 된다면 화면에서 결국 해당 컬럼의 존재유무를 또 한번 체크 해 주어야 합니다.

== 여기서 부턴 자바 개발자 입장에서의 생각입니다...==
혹여나 쿼리에서 조절이 가능하다는 가정하에...
전체가 (국문,영문,중문)이라 한다면...
특정일엔 (국문,중문) 만이 리턴되어 나온다면...
화면에선 '국문' || ' ' || '중문' 식으로 표시되겠죠...
그렇다면 결국 화면에선 다시 나오지 않은 값이 있을경우 좌측으로 붙여주는 처리를 하셔야 하지 않을까 생각됩니다.
결국 같은 처리를 하셔야 한다면...간단히 0일경우 화면에서 빼주는 작업을
화면단에 붙이 시는게 편하지 않을까 생각합니다...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입