========================================================================
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처리는 다 해봤는데 잘 안되더라구요.
그럼 조언부탁드립니다. |