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 39118 게시물 읽기
No. 39118
통계쿼리좀 부탁드려여
작성자
장선각(airmanx)
작성일
2011-11-22 16:41ⓒ
2011-11-28 10:55ⓜ
조회수
5,040

데이터를 조회하면 아래와 같이 조회됩니다.

DT CD CNT
2011-11 10 0
2011-11 20 10
2011-11 30 2
2011-11 40 0
2011-11 50 0
2011-11 60 0
2011-11 70 0
2011-11 80 0
2011-11 90 0
2011-11 91 0
2011-10 10 21
2011-10 20 30
2011-10 30 5
2011-10 40 0
2011-10 50 10
2011-10 60 4
2011-10 70 8
2011-10 80 0
2011-10 90 2
2011-10 91 0

이 데이터를 월별 코드별로 보고싶은데 아무리해도 생각이 나지 않습니다. 도와주세여..

DT 10 20 30 40 50 60 70 80 90 91
2011-11 0 10 2 0 0 0 0 0 0 0
2011-10 21 30 5 0 10 4 8 0 2 0

이렇게 보고 싶은데 어케하면 좋을까여 도와주세여..

 

도움주신분들 고맙습니다.... 그런데 코드는 가변이예여.. 즉 가로의 셀도 동적으로 작성되어야 합니다.

 

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

SELECT CASE WHEN CD = 10 THEN CNT END AS CD_10,

CASE WHEN CD = 20 THEN CNT END AS CD_20,

CASE WHEN CD = 30 THEN CNT END AS CD_30

FROM T

GROUP BY DT

 

코드의 수가 고정이라고하면 이런식으로 쭉적으시면되요....

이동호(ssamldh)님이 2011-11-23 01:07에 작성한 댓글입니다.

with t as (
SELECT '2011-11' AS DT, 10 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 20 AS CD, 10 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 30 AS CD, 2 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 40 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 50 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 60 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 70 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 80 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 90 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-11' AS DT, 91 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 10 AS CD, 21 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 20 AS CD, 30 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 30 AS CD, 5 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 40 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 50 AS CD, 10 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 60 AS CD, 4 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 70 AS CD, 8 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 80 AS CD, 0 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 90 AS CD, 2 AS CNT FROM DUAL UNION ALL
SELECT '2011-10' AS DT, 91 AS CD, 0 AS CNT FROM DUAL
)
SELECT DT,
       MIN(DECODE(CD, 10, CNT)) AS "10",
       MIN(DECODE(CD, 20, CNT)) AS "20",
       MIN(DECODE(CD, 30, CNT)) AS "30",
       MIN(DECODE(CD, 40, CNT)) AS "40",
       MIN(DECODE(CD, 50, CNT)) AS "50",
       MIN(DECODE(CD, 60, CNT)) AS "60",
       MIN(DECODE(CD, 70, CNT)) AS "70",
       MIN(DECODE(CD, 80, CNT)) AS "80",
       MIN(DECODE(CD, 90, CNT)) AS "90",
       MIN(DECODE(CD, 91, CNT)) AS "91"
FROM t
GROUP BY DT

 

이런식이 어떤지... CD가 정해져 있다면 이렇게 하면됩니다. 더 좋은 방법 있으면 저도 좀 알려주세요^^*

윤병현(loveybh)님이 2011-11-23 16:04에 작성한 댓글입니다.

select DT ,

           sum(decode(CD, '10', CNT, 0)) as "10",

           sum(decode(CD, '20', CNT, 0)) as "20",

           sum(decode(CD, '30', CNT, 0)) as "30",

                                . . .

           sum(decode(CD, '91', CNT, 0) as "91"

from t

group by DT;

이렇게 해도 ...괜찮지 않을까요...test해볼수 없어서 못해보고 올려요

박정옥님이 2011-11-23 16:59에 작성한 댓글입니다.
이 댓글은 2011-11-23 17:03에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
39122메뉴 구조에서 시작과 종료를 확인 [2]
김주환
2011-11-24
4679
39121rollup에 총계대신 소계값중 max값을 출력하고 싶습니다. [2]
문성환
2011-11-24
5104
39120세로를 가로로 변환하는 방법 [4]
제로
2011-11-23
7358
39118통계쿼리좀 부탁드려여 [3]
장선각
2011-11-22
5040
39117같은테이블 조인.. 튜닝 부탁드립니다 [2]
궁금이
2011-11-22
4875
39116테이블 생성시 권한 문제... [1]
다다익선
2011-11-22
3971
39113트리거 작성시 질문입니다. [1]
유상구
2011-11-21
3617
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다