간단한 쿼리 인데요.. 0 2 2,310

by 손님 [SQL Query] partition outer join [2012.03.23 19:29:39]



WITH t1 AS
(
SELECT '2011' YYYY, '남' SexTyp FROM dual UNION ALL
SELECT '2011' YYYY, '남' SexTyp FROM dual UNION ALL
SELECT '2011' YYYY, '여' SexTyp FROM dual UNION ALL
SELECT '2012' YYYY, '남' SexTyp FROM dual UNION ALL 
SELECT '2012' YYYY, '남' SexTyp FROM dual
)
Select * From (
Select YYYY, SexTyp, Sum(1) Cnt
  From t1
 Group By YYYY, SexTyp
 Order By YYYY, SexTyp) t1

위의 쿼리를 실행 하면

2011 남 2
2011 여 1
2012 남 2

이렇게 나오는데요..원하는 결과는 다음과 같이 남여는 무조건 표시가 되게 하려고 합니다.

2011 남 2
2011 여 1
2012 남 2
2012 여 0


도움 부탁드립니다..
by madcat [2012.03.23 21:35:32]
10g 이상에서는 partition outer join이라는 기능을 제공한다고 합니다.



WITH tbl AS ( SELECT '2011' YYYY, '남' SexTyp FROM dual UNION ALL SELECT '2011' YYYY, '남' SexTyp FROM dual UNION ALL SELECT '2011' YYYY, '여' SexTyp FROM dual UNION ALL SELECT '2012' YYYY, '남' SexTyp FROM dual UNION ALL SELECT '2012' YYYY, '남' SexTyp FROM dual ), gender as (select '남' SexTyp from dual union all select '여' from dual) select r.yyyy, l.sextyp, nvl(cnt, 0) cnt from gender l left outer join (Select YYYY, SexTyp, Sum(1) Cnt From tbl Group By YYYY, SexTyp ) r partition by (r.yyyy) on (l.sextyp = r.sextyp)

by 손님 [2012.03.24 10:45:13]
아...정말 감사드립니다..^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입