database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 3040 게시물 읽기
No. 3040
두 필드간 차이로 구분하여 COUNT 하는 문제
작성자
김영훈
작성일
2011-01-31 14:50
조회수
5,612

안녕하세요.

DB2 7 MVS 에서 JDBC 로 작업 중입니다.

제목 처럼 테이블의 두 필드 차이별로 구분 하여 COUNT 하는 쿼리 입니다.

 SELECT                                                                                                                    
        MAX(AAAAA)                    RMSR                                                                      
      , COUNT(BBBBB)                  TOTAL                                                                           
      , COUNT(CASE WHEN DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) >= (30 * -12)  
                    AND DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) <  (30 * -6)   
                   THEN 1 ELSE NULL END)    CNT1                                                                      
      , COUNT(CASE WHEN DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) >= (30 * -6)   
                    AND DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) <  (30 *  0)   
                   THEN 1 ELSE NULL END)    CNT2                                                                      
      , COUNT(CASE WHEN DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) >= (30 *  0)   
                    AND DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) <= (30 *  6)   
                   THEN 1 ELSE NULL END)    CNT3                                                                      
      , COUNT(CASE WHEN DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) >  (30 *  6)   
                    AND DAYS(TIMESTAMP(CCCCC || '000000')) - DAYS(TIMESTAMP(AAAAA || '000000')) <= (30 * 12)   
                   THEN 1 ELSE NULL END)    CNT4      
   FROM SXTB            

이렇게 작업 하려고 하였으나 불 필요하게 CASE 문을 많이 타야 하는데 다른 방법이 있으면 조언좀 부탁 드립니다.                                                                                             

이 글에 대한 댓글이 총 1건 있습니다.

case 문은 조건 비교를 하려면 당연히 타야 하겠고..

 

inline 쿼리를 통해 동일한 구문은 좀 줄이는게 낫지 않은가 싶습니다.

암비님이 2011-02-15 09:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3043SQL0181 에러질문입니다. [1]
dlkfjlfj
2011-03-19
6004
3042[긴급] Rtrim 해결좀 해주세요!!! [1]
leesang
2011-03-16
5181
3041IBM AS/400 ODBC 연결
송우철
2011-02-01
5834
3040두 필드간 차이로 구분하여 COUNT 하는 문제 [1]
김영훈
2011-01-31
5612
3039데이터 길이 가져오는 함수가 뭐죠?(Length는 데이터형 길이) [2]
김정수
2011-01-19
5521
3038간단한 crontab...인데..안되네요
라라라
2010-12-30
5716
3037토드가 기능이 많군요. 그런데 그 기능중에...(토드사용법문의가 아님)
라라라
2010-12-16
6014
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2022 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v14.2로 자료를 관리합니다