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 41971 게시물 읽기
No. 41971
row을 컬럼으로 변경하는 쿼리 좀 봐주세요,
작성자
서주희
작성일
2023-09-01 13:55ⓒ
2023-09-01 13:56ⓜ
조회수
1,834

안녕하세요.

row을 컬럼으로 변경하는 쿼리 좀 봐주세요, 

이리 저리 해보는데 잘 안되네요.ㅠ

 

SELECT '홍길동' AS name, '국어' AS subject, 77 AS score_1, 88 AS score_2 FROM dual UNION ALL

 

SELECT '홍길동' AS name, '영어' AS subject, 86 AS score_1, 85 AS score_2 FROM dual UNION ALL

 

SELECT '홍길동' AS name, '수학' AS subject, 70 AS score_1, 65 AS score_2 FROM dual UNION ALL

 

SELECT '강호동' AS name, '국어' AS subject, 90 AS score_1, 98 AS score_2 FROM dual UNION ALL

 

SELECT '강호동' AS name, '영어' AS subject, 92 AS score_1, 87 AS score_2 FROM dual UNION ALL

 

SELECT '강호동' AS name, '수학' AS subject, 64 AS score_1, 71 AS score_2 FROM dual UNION ALL

 

SELECT '전지현' AS name, '국어' AS subject, 100 AS score_1, 98 AS score_2 FROM dual UNION ALL

 

SELECT '전지현' AS name, '수학' AS subject, 96 AS score_1, 100 AS score_2 FROM dual UNION ALL

 

SELECT '이영애' AS name, '국어' AS subject, 96 AS score_1, 98 AS score_2 FROM dual UNION ALL

 

SELECT '이영애' AS name, '영어' AS subject, 99 AS score_1, 100 AS score_2 FROM dual UNION ALL

 

SELECT '이영애' AS name, '수학' AS subject, 100 AS score_1, 100 AS score_2 FROM dual

 

 

이름 과목 score_1 score_2
홍길동 국어 77 88
홍길동 영어 86 85
홍길동 수학 70 65
강호동 국어 90 98
강호동 영어 92 87
강호동 수학 64 71
전지현 국어 100 98
전지현 수학 96 100
이영애 국어 96 98
이영애 영어 99 100
이영애 수학 100 100


아래처럼 나오게 하고 싶어요.

참 과목은 늘어 날수도 있어요.

 

  전체합계 국어 영어 수학
  score_1 score_2 합계 score_1 score_2 합계 score_1 score_2 합계 score_1 score_2 합계
홍길동 233 238 471 77 88 165 86 85 171 70 65 135
강호동 246 256 502 90 98 188 92 87 179 64 71 135
전지현 196 198 394 100 98 198     0 96 100 196
이영애 295 298 593 96 98 194 99 100 199 100 100 200


도움 좀 주세요

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

안녕하세요.

rollup과 pivot을 활용하시면 될듯합니다.

인터넷 참고해서 짜봤는데 참고되시길.


with t as (

SELECT '홍길동' AS name, '국어' AS subject, 77 AS score_1, 88 AS score_2 FROM dual UNION ALL

SELECT '홍길동' AS name, '영어' AS subject, 86 AS score_1, 85 AS score_2 FROM dual UNION ALL

SELECT '홍길동' AS name, '수학' AS subject, 70 AS score_1, 65 AS score_2 FROM dual UNION ALL

SELECT '강호동' AS name, '국어' AS subject, 90 AS score_1, 98 AS score_2 FROM dual UNION ALL

SELECT '강호동' AS name, '영어' AS subject, 92 AS score_1, 87 AS score_2 FROM dual UNION ALL

SELECT '강호동' AS name, '수학' AS subject, 64 AS score_1, 71 AS score_2 FROM dual UNION ALL

SELECT '전지현' AS name, '국어' AS subject, 100 AS score_1, 98 AS score_2 FROM dual UNION ALL

SELECT '전지현' AS name, '수학' AS subject, 96 AS score_1, 100 AS score_2 FROM dual UNION ALL

SELECT '이영애' AS name, '국어' AS subject, 96 AS score_1, 98 AS score_2 FROM dual UNION ALL

SELECT '이영애' AS name, '영어' AS subject, 99 AS score_1, 100 AS score_2 FROM dual UNION ALL

SELECT '이영애' AS name, '수학' AS subject, 100 AS score_1, 100 AS score_2 FROM dual

)

select * 

from ( select name,

              DECODE(GROUPING(subject),1,'합계',subject) subject,

              sum(score_1) sum_s1,

              sum(score_2) sum_s2,

              sum(score_1+score_2) sum_s3

       from t

       group by name, rollup (subject)

)

pivot (min(sum_s1) score_1, min(sum_s2) score_2, min(sum_s3) 합계

       for subject in ( '합계' 전체합계, '국어' 국어, '영어' 영어, '수학' 수학)

       )

;

정상규(pajama)님이 2023-09-01 14:36에 작성한 댓글입니다.
이 댓글은 2023-09-01 14:41에 마지막으로 수정되었습니다.

우와 답변 순삭이네요..ㅎ

너무 감사합니다.

여기분들은 다들 천재들인가 봐요.

많이 배워가요

서주희님이 2023-09-01 15:01에 작성한 댓글입니다. Edit

다른 분들은 그러시지만 전 아닙니다. 인터넷에서 찾아보면서 쿼리 짜야되요.

도움되셔서 다행입니다!

정상규(pajama)님이 2023-09-01 15:24에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41977묶음으로 읽기 문의 입니다. [1]
Kwak
2023-11-08
1201
41976순번 순위 부여 [2]
감사합니다
2023-10-21
1556
41974L [2]
고길당
2023-09-05
1805
41971row을 컬럼으로 변경하는 쿼리 좀 봐주세요, [3]
서주희
2023-09-01
1834
41970데이타베이스와 테이블이 안보이네요!!! [1]
신승익
2023-08-22
1252
41969OR EXPANSION 가능하도록 가능한지 확인 부탁드립니다. [2]
김병두
2023-08-21
1334
41968쿼리 좀 도와주세요. 도저히 못 구하겠어요 [3]
김진수
2023-08-11
1092
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다