select count(*) total,count(case when flag='0000' then 1 end) zero_cnt
from a123
이렇게 바꾸시면 될듯.. ^^*
-- 손님 님이 쓰신 글:
>> 안녕하세요..
>> SQL초보입니다.
>> sql을 만들려고 보니 테이블을 두번 읽게 되는거 같어서 한번만 읽고자 합니다.
>> 어떻게 해야되는지 조언부탁드리니다.
>>
>> TABLE a123
>> ===============
>> ID FLAG
>> ===============
>> 100 0000
>> 101 0000
>> 102 0010
>> 103 0001
>> 104 0000
>> ........
>> ===============
>>
>> 결과
>> ===============
>> total zero_cnt
>> ===============
>> 5 3
>>
>>
>> 이런 결과를 얻고 싶거든요..여기 예제는 데이타가 얼마 안되지만
>> 실제로는 수십,백만 까지 쌓일 수 있는 테이블이라서
>> 성능을 생각하지 않을 수가 없군요..
>>
>> 여기저기 사이트 돌아다니면서 오라클의 경우는 다음과 같은 답을 얻었습니다.
>>
>> select count(*) total,count(decode(flag,'0000',1)) zero_cnt
>> from a123
>>
>> 그래서 이걸 informix용으로 바꿔서 다음과 같이 하니까 syntax error가 나는군요
>>
>> select count(*) total,count(case when flag='0000' then 1 end) zero_cnt
>> from a123
>>
>> 어떻게 하면될까요?
|