데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
MSSQL 사용중이고
A테이블엔 ID가 들어있고 B테이블엔 데이터가 들어가있습니다.
A TABLE
ID NAME
KIM 김하나
HAN 한만두
B TABLE
ID CODE SCORE
KIM KOR 100
KIM ENG 80
HAN MATH 70
출력
ID NAME KOR ENG MATH
KIM 김하나 100 80 (NULL)
HAN 한만두 (NULL) (NULL) 70
이런 형식으로 출력하고 싶습니다.
SELECT
A.ID
, A.NAME
, (SELECT B.SCORE FROM B WHERE B.ID = A.ID AND CODE ='KOR') AS KOR
...
FROM A LEFT JOIN B ON A.ID = B.ID
이런 형태로 짠 이후에 GROUP BY 걸고 각각 SELECT에 SUM 해주려고 했는데
SQL 오류(130) : 집계 또는 하위 쿼리가 포함된 식에서는 집계 함수를 수행할 수 없습니다
메세지가 뜨네요
어떠한 식으로 해야할지 도와주세요 ㅠ
Comment 2
-
축구선수
2018.04.11 11:09
SELECT A.ID, A.NAME, SUM(CASE B.CODE WHEN 'KOR' THEN B.SCORE END) AS KOR, SUM(CASE B.CODE WHEN 'ENG' THEN B.SCORE END) AS ENG, SUM(CASE B.CODE WHEN 'MATH' THEN B.SCORE END) AS MATHFROM(SELECT *FROM(SELECT 'KIM' AS ID, '김하나' AS NAMEUNION ALLSELECT 'HAN' AS ID, '한만두' AS NAME) A) ALEFT OUTER JOIN(SELECT *FROM(SELECT 'KIM' AS ID, 'KOR' AS CODE, 100 AS SCOREUNION ALLSELECT 'KIM' AS ID, 'ENG' AS NAME, 80UNION ALLSELECT 'HAN' AS ID, 'MATH' AS NAME, 70) B) BON A.ID = B.IDGROUP BY A.ID, A.NAME -
karon
2018.04.11 12:30
감사합니다 해결했습니다