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 3043 게시물 읽기
No. 3043
SQL0181 에러질문입니다.
작성자
dlkfjlfj(cion25)
작성일
2011-03-19 18:58
조회수
6,632

========================================================================

SELECT

 SUM(CASE WHEN
  YEAR(CURRENT_DATE-'19'||substr(JKA202,1,2))||'-'||substr(JKA202,3,2))||'-'||substr(JKA202,5,2)))
   Between 21 and 25 and substr(JKA202,7,1) in ('1')) then 1 else 0 end) as male_21_25,

 SUM(CASE WHEN
  YEAR(CURRENT_DATE-'19'||substr(JKA202,1,2))||'-'||substr(JKA202,3,2))||'-'||substr(JKA202,5,2)))
   Between 21 and 25 and substr(JKA202,7,1) in ('2')) then 1 else 0 end) as female_21_25,

 SUM(CASE WHEN
  YEAR(CURRENT_DATE-'19'||substr(JKA202,1,2))||'-'||substr(JKA202,3,2))||'-'||substr(JKA202,5,2)))
   Between >= 26 and substr(JKA202,7,1) in ('1')) then 1 else 0 end) as male_26,

 SUM(CASE WHEN
  YEAR(CURRENT_DATE-'19'||substr(JKA202,1,2))||'-'||substr(JKA202,3,2))||'-'||substr(JKA202,5,2)))
   Between >= 26 and substr(JKA202,7,1) in ('2')) then 1 else 0 end) as female_26

from SAM112

=============================================================================

위쿼리는(기억이 가물가물해서 틀릴 수도 있지만 돌아가는 쿼리입니다.)

21세에서 25세까지 남자 합계
21세에서 25세까지 여자 합계
26세이상의 남자 합계
26세이상의 여자 합계

남자 합계는 잘 구해지는 여자합계만 두 개 모두 결과값이 null이 되더라구요
그래서 주민번호 7번째인 성별로 Group by를 해보니까 1,2,null 이렇게 잡히더라구요
뭔가 잘못된 자료가 있다는 얘긴데....
자료수가 몇십만개되서 찾기도 만무하고 이리저리 쿼리를 하다보니 

SQL0181 - Value in date, time, or timestamp string not valid.

이런 메세지가 잡히더라구요.
그래서 검색해보니
https://www-304.ibm.com/support/docview.wss?uid=swg21349843

이런해결책이 있는데 대체 저의 쿼리에는 어떻게 적용해야 하는지 모르겠습니다.

YEAR를 쓰지 않고 그냥 substr 해서 계산을 해보면 저런 에러는 안나는데 자료수가 좀 잘못나오는 것 같고

조언이라도 좋으니 부탁드리겠습니다. 참고로 IFNULL부터 NULL처리는 다 해봤는데 잘 안되더라구요.
그럼 조언부탁드립니다.

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

 

jka202 컬럼을 where 조건에서 필터링 해야 할것 같네요..

select timestamp('19'||substr(jka202,1,6)||'000000')
  from (values '8901011823302',
               '8901012238302',
               '890101A230984',
               '222',
               'A2223332') t1(jka202)
 where jka202 between '00000' and '999999'
   and length(jka202) >= 7
;
 

 

조는냥이님이 2011-03-21 12:35에 작성한 댓글입니다.
이 댓글은 2011-03-22 10:15에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3046Unique Constraint VS Unique Index [1]
짝퉁헤리포터
2011-04-14
6170
3045질문 드립니다. [1]
purmir
2011-04-08
5277
3044기간내에 해당하는 날짜와 그 정보를 가져오고 합니다. [2]
purmir
2011-04-08
5819
3043SQL0181 에러질문입니다. [1]
dlkfjlfj
2011-03-19
6632
3042[긴급] Rtrim 해결좀 해주세요!!! [1]
leesang
2011-03-16
5589
3041IBM AS/400 ODBC 연결
송우철
2011-02-01
6227
3040두 필드간 차이로 구분하여 COUNT 하는 문제 [1]
김영훈
2011-01-31
6034
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다