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 7217 게시물 읽기
No. 7217
2개 쿼리 결과값을 하나로 표현
작성자
강영호
작성일
2020-04-28 09:46ⓒ
2020-04-28 21:57ⓜ
조회수
270

안녕하세요. 2개의 쿼리결과를 하나의 결과로 표현하고 싶은데 잘 안되서 문의 드립니다.

각각 쿼리를 실행 했을때 나오는 결과 값입니다.

T1      
date code code_name count
202003 1 a 2
202003 1 a 1
202003 2 b 1

T2      
date code code_name count
202002 3 c 1
202002 1 a 1

 

위 두개 결과를 하나의 결과로 아래와 같이 표현하고자 합니다.

 

     
 
code code_name count row_sum_count pre pre_sum_count
1 a 2 3 0 1
1 b 1 3 0 1
2 c 0 3 1 1
1 a 1 1 1 1

 

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

질문의 집합은 중간 결과 집합인 듯 한데?
원본 테이블 자체가 2개일까요?
아니면 원본 1개 테이블에 조건만 달리한 2개의 결과일까요?
왠지 1개 일 것 같은데요.

마농(manon94)님이 2020-04-28 10:21에 작성한 댓글입니다.

WITH t AS
(
SELECT '202003' ctrl_ym, '302100' sla_cd, 'malware' malcd_tp_nm, 2 cnt
UNION ALL SELECT '202003', '304500', 'malware', 1
UNION ALL SELECT '202003', '302100', 'trojan' , 1
UNION ALL SELECT '202002', '302100', 'pup'    , 1
UNION ALL SELECT '202002', '304500', 'malware', 1
)
SELECT sla_cd, malcd_tp_nm
     ,     SUM(CASE ctrl_ym WHEN '202003' THEN cnt ELSE 0 END) cnt
     , SUM(SUM(CASE ctrl_ym WHEN '202003' THEN cnt ELSE 0 END)
                                   ) OVER(PARTITION BY sla_cd) mal_tot_cnt
     ,     SUM(CASE ctrl_ym WHEN '202002' THEN cnt ELSE 0 END) pre_cnt
     , SUM(SUM(CASE ctrl_ym WHEN '202002' THEN cnt ELSE 0 END)
                                   ) OVER(PARTITION BY sla_cd) pre_tot_cnt
  FROM t
 WHERE ctrl_ym IN ('202002', '202003')
 GROUP BY sla_cd, malcd_tp_nm
;

마농(manon94)님이 2020-04-28 11:25에 작성한 댓글입니다.
이 댓글은 2020-04-28 11:27에 마지막으로 수정되었습니다.

마농님 감사합니다.

원본 테이블 1개 맞구요.

 

작성해주신 예제를 베이스로 하면 원하는 결과를 출력할수 있을거 같습니다.

 

복 받으세요~

강영호님이 2020-04-28 13:06에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
7221대용량 데이터 삭제 관련입니다. [1]
인보
2020-06-20
86
7219대량 데이터 처리시 조회속도 저하현상
개발자
2020-06-04
105
7218수평 샤딩 타겟 DB를 효과적으로 찾는 방법이 궁금합니다~
이성원
2020-05-26
146
72172개 쿼리 결과값을 하나로 표현 [3]
강영호
2020-04-28
270
721624시간안에 복귀 되지 않는 사람 카운트 값 구하기.... [3]
유아무개
2020-04-24
250
7215한 필드에 있는 값을 여러 필드에 나눠서 넣는 방법 있나요? [2]
빨간모자
2020-04-10
298
7214또다른 조합 sql ㅡ 실행파일 내용
빨간모자
2020-04-09
260
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.266초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다