데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
DB에 상기와 같은 데이터가 있습니다.
AA | BB | EE | FF | A |
1011 | 핸드폰 | 1010 | N | 0 |
1012 | 전화기 | 1011 | N | 0 |
1018 | 노트북 | 1012 | Y | 10 |
1049 | 케이스 | 1012 | Y | 10 |
1087 | 컴퓨터 | 1012 | Y | 10 |
1139 | 선풍기 | 1012 | Y | 10 |
1168 | 테블릿 | 1012 | Y | 10 |
SELECT AA,BB,EE,FF,
CASE WHEN FF = 'N' THEN
(SELECT SUM(A) FROM RESULT_TEST WHERE EE = Z.AA)
ELSE A END AS
A
FROM RESULT_TEST Z
ORDER BY AA ASC
이렇게 하면 전화기 금액은 집계가 되는데 핸드폰 금액까지 어떻게 집계를 하죠.
AA | BB | EE | FF | A |
1011 | 핸드폰 | 1010 | N | 0 |
1012 | 전화기 | 1011 | N | 50 |
1018 | 노트북 | 1012 | Y | 10 |
1049 | 케이스 | 1012 | Y | 10 |
1087 | 컴퓨터 | 1012 | Y | 10 |
1139 | 선풍기 | 1012 | Y | 10 |
1168 | 테블릿 | 1012 | Y | 10 |
이게 원하는 결과 입니다. select 했을 때
AA | BB | EE | FF | A |
1011 | 핸드폰 | 1010 | N | 50 |
1012 | 전화기 | 1011 | N | 50 |
1018 | 노트북 | 1012 | Y | 10 |
1049 | 케이스 | 1012 | Y | 10 |
1087 | 컴퓨터 | 1012 | Y | 10 |
1139 | 선풍기 | 1012 | Y | 10 |
1168 | 테블릿 | 1012 | Y | 10 |
Comment 1
-
One이
2020.11.19 14:33
아래과 같이 하면 되는데 맞는 건가요???-- MSSQL --WITH t AS(SELECT 1011 cd, '핸드폰' nm, 1010 pcd, 'N' yn, 0 vUNION ALL SELECT 1012, '전화기', 1011, 'N', 0UNION ALL SELECT 1018, '노트북', 1012, 'Y', 10UNION ALL SELECT 1049, '케이스', 1012, 'Y', 10UNION ALL SELECT 1087, '컴퓨터', 1012, 'Y', 10UNION ALL SELECT 1139, '선풍기', 1012, 'Y', 10UNION ALL SELECT 1168, '테블릿', 1012, 'Y', 10)--select * from t,t1 AS(SELECT cd root_cd, cd, v FROM tUNION ALLSELECT p.root_cd, c.cd, c.v FROM t1 p INNER JOIN t c ON p.cd = c.pcd)SELECT a.cd, a.nm, a.pcd, a.yn, b.vFROM t a INNER JOIN (SELECT root_cd, SUM(v) v FROM t1 GROUP BY root_cd) bON a.cd = b.root_cd;