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
운영게시판
최근게시물
Oracle Q&A 39036 게시물 읽기
No. 39036
GROUP BY 관련해서..2
작성자
카라(karav)
작성일
2011-11-02 15:16
조회수
4,574

저번 질문에 대한 추가질문입니다.

GROUP BY하면 칼럼에 있는 값만 그룹핑되자나요. 없는값은  COUNT(*) = 0으로 나오기해서 만들어주고싶습니다.

예를 들면, 칼럼A/칼럼B 유형이 4개, 칼럼C는 유형이 9개라고 했을때 아래와 같이 SELECT문을 써서 원하는 결과값을 얻는 방법있을까요?


칼럼A  |  칼럼B  | 칼럼C  |  칼럼D  |

  1          1       1           1

  1          1       2           1

  1          1       4           1

  1          1       4           1

  1          1       9           1


  1          2       1           1

  1          2       2           1

  1          2       4           1

  1          2       4           1


  1          4       1           1

  1          4       2           1

  1          4       4           1

  4          4       4           1

SELECT 칼럼A, 칼럼B, 칼럼C, COUNT(*) FROM TABLE GROUP BY 칼럼A, 칼럼B, 칼럼C;

원하는 결과>

칼럼A  |  칼럼B  | 칼럼C  |  COUNT(*)

  1          1       1           1
  1          1       2           1
  1          1       3           0
  1          1       4           2
  1          1       5           0
  1          1       6           0
  1          1       7           0
  1          1       8           0
  1          1       9           1

  1          2       1           1
  1          2       2           1
  1          2       3           0
  1          2       4           2
  1          2       5           0
  1          2       6           0
  1          2       7           0
  1          2       8           0
  1          2       9           0

  1          3       1           0
  1          3       2           0
  1          3       3           0
  1          3       4           0
  1          3       5           0
  1          3       6           0
  1          3       7           0
  1          3       8           0
  1          3       9           0

  1          4       1           1
  1          4       2           1
  1          4       3           0
  1          4       4           2
  1          4       5           0
  1          4       6           0
  1          4       7           0
  1          4       8           0
  1          4       9           0

  2          1       1           0
  2          1       2           0
  2          1       3           0
  2          1       4           0
  2          1       5           0
  2          1       6           0
  2          1       7           0
  2          1       8           0
  2          1       9           0

:
:
:

 

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

WITH T AS(
SELECT 1 COL1, 1 COL2, 1 COL3 FROM DUAL UNION ALL
SELECT 1 COL1, 2 COL2, 1 COL3 FROM DUAL UNION ALL
SELECT 1 COL1, 3 COL2, 1 COL3 FROM DUAL UNION ALL
SELECT 2 COL1, 1 COL2, 2 COL3 FROM DUAL UNION ALL
SELECT 2 COL1, 2 COL2, 2 COL3 FROM DUAL UNION ALL
SELECT 3 COL1, 1 COL2, 3 COL3 FROM DUAL UNION ALL
SELECT 4 COL1, 3 COL2, 4 COL3 FROM DUAL UNION ALL
SELECT 4 COL1, 1 COL2, 9 COL3 FROM DUAL UNION ALL
SELECT 4 COL1, 1 COL2, 9 COL3 FROM DUAL
)
SELECT
        A.COL1,A.COL2,A.COL3,NVL(CNT,0) AS CNT
 FROM
 (
   SELECT
            COL1,COL2,COL3
     FROM
    (
       SELECT 
             DECODE(MOD(LEVEL,4),0,4,MOD(LEVEL,4)) AS COL1
       FROM DUAL CONNECT BY LEVEL <=4
    ) A ,
    (
        SELECT 
             DECODE(MOD(LEVEL,4),0,4,MOD(LEVEL,4)) AS COL2
       FROM DUAL CONNECT BY LEVEL <=4
    ) B ,
    (
        SELECT 
             DECODE(MOD(LEVEL,9),0,9,MOD(LEVEL,9)) AS COL3
       FROM DUAL CONNECT BY LEVEL <=9
    ) C
    ORDER BY COL1,COL2,COL3
   
 ) A,
  (
    SELECT COL1,COL2,COL3,COUNT(1) AS CNT
    FROM T
    GROUP BY COL1,COL2,COL3
   )B
 WHERE A.COL1 =B.COL1(+)
   AND A.COL2 =B.COL2(+)
   AND A.COL3 =B.COL3(+)
 ORDER BY COL1,COL2,COL3
 ;
 
 
 
 
  

이동호(ssamldh)님이 2011-11-02 23:12에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39040중복기간 일수 조회 질문입니다. [3]
deicide
2011-11-03
5352
39038터미널 동시 접속 시 쿼리가 느려지는 현상 [2]
장정
2011-11-02
4323
39037데이타가 손실되요 [1]
디비초보
2011-11-02
3557
39036GROUP BY 관련해서..2 [1]
카라
2011-11-02
4574
39035알수가 없네요 커서가 안닫히는.. [1]
지나
2011-11-02
5562
39034최대 보유수량 구하기? 쿼리도움부탁드려여 [5]
이종성
2011-11-02
4787
39033두칼럼사이의 값을 여려줄로 출력할&#46468;.. 조언부탁드립니다. [1]
이경율
2011-11-02
4222
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다