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
운영게시판
최근게시물
MS-SQL Q&A 7111 게시물 읽기
No. 7111
when case 질문
작성자
김지철(jcmmk)
작성일
2018-02-19 20:19
조회수
2,181

 항상 도움받는 개발자입니다.

when case를 써보고 있는데 한줄로 쿼리가 나왔으면 하는데 안되서 질문드립니다.

현재 테이블이

 

번호 이름 학교 나이 성별

A  김연아 고려대 수학 A

B  김연아 고려대 영어 B

C 전효성 고려대 20 여자

D 권지용 고려대 22 남자

 

이렇게 있다고 하면

 

저는 

이름    학교     수학  영어

김연아 고려대   A       B

 

이렇게 나오고 싶습니다.

 

그래서 쿼리문을

 

selecrt 이름,학교,(case when 과목='수학' then 학점 end),

(case when 과목 ='영어' then 학점 end)

from table where 이름='김연아'

 

이렇게 했는데 한줄로 안나오고 두줄로 나오네요

 

김연아 고려대 A

김연아 고려대      B

 

이렇게요 혹시 한줄로 나오는 방법이 있으면 알려주실수 있으신가요>?

 

 

 

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

방법1

WITH 테이블 ( 이름, 학교, 과목, 성적 )
AS
(
SELECT N'김연아', N'고려대', N'수학', 'A'
UNION ALL SELECT N'김연아', N'고려대', N'영어', 'B'
UNION ALL SELECT N'전효성', N'고려대', N'영어', 'C'
)
SELECT 이름, 학교, MAX( 수학 ) AS 수학, MAX( 영어 ) AS 영어
FROM (
select 이름,학교,(case when 과목='수학' then 성적 end) AS 수학,
(case when 과목 ='영어' then 성적 end) AS 영어
from 테이블 where 이름='김연아'
) AS kk
GROUP BY 이름, 학교
;
 
방법2
WITH 테이블 ( 이름, 학교, 과목, 성적 )
AS
(
SELECT N'김연아', N'고려대', N'수학', 'A'
UNION ALL SELECT N'김연아', N'고려대', N'영어', 'B'
UNION ALL SELECT N'전효성', N'고려대', N'영어', 'C'
)
SELECT 이름, 학교, 수학, 영어
FROM ( 
SELECT 이름, 학교, 과목, 성적
FROM 테이블 
WHERE 이름 = '김연아'
) AS org
PIVOT
(
MAX( 성적 )
FOR 과목 IN ( 수학, 영어 )
) AS pvt
;
우욱님이 2018-02-20 09:33에 작성한 댓글입니다. Edit

 피벗을 사용해야 구현이 가능하군요

도움주신 내용을 바탕으로 작업해보겠습니다.  감사합니다.

김지철(jcmmk)님이 2018-02-21 11:37에 작성한 댓글입니다.
이 댓글은 2018-02-21 11:37에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
7114aws rds 의 mssql 동시저장 관련 [1]
재우니
2018-03-05
2418
7113mssql 업그레이드 질문
goblin
2018-03-02
2003
7112ROW_NUMBER [2]
크레용
2018-02-20
2192
7111when case 질문 [2]
김지철
2018-02-19
2181
7110프로시저 다국어 질문 [1]
신입
2018-02-14
2438
7109쿼리 조인 질문드립니다. [1]
asdf
2018-02-08
2134
7108MSSQL 2000 설치 질문(설치 화면이 안나오는 현상)
민준기
2018-01-26
2189
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다