반응형
SQL SERVER 에서 여러개의 쿼리를 하나의 쿼리로 담아야할 때 저는 아래와 같이 UNION ALL 을 사용합니다.
이는 담아야 하는 테이블은 많으나 JOIN할수 있는 조건이 없고
하나의 테이블에 모든 데이터를 담기 어려울 때가 있기 때문입니다.
저는 이럴때 아래와 같이 진행합니다.
만약 유저테이블의 이름을 뽑고 매출테이블의 금액을 뽑고 싶다..
(물론 위와 같은 케이스로 데이터를 뽑지는 않겠지만 예시로 봐주시면 좋을 것 같습니다.)
- 유저 테이블
유저 테이블 | USER_NM | USER_ID | USER_AGE |
영희 | 1004 | 21 | |
철수 | 9999 | 25 | |
강인 | 7777 | 26 |
- 매출 테이블
매출 테이블 | DATE | USER_EN_NM | DAY_PRICE |
20231125 | YUNG | 120,000 | |
20231126 | YUNG | 150,000 | |
20231125 | CHUL | 220,000 | |
20231125 | KANG | 333,000 |
SELECT
USER_NM AS '유저이름',
'' AS '날짜',
'' AS '판매금액'
FROM 유저
UNION ALL
SELECT
'' AS '유저이름',
DATE AS '',
DAY_PRICE AS '판매금액'
FROM 매출
데이터 형식을 맞추고, 컬럼 갯수를 맞춰서 쿼리를 짜줍니다.
결과 값을 하나로 맞추기 위해서는 GROUP BY 와
MAX(USER_NM), MAX(DAYE), DAY_PRICE 를 적절히 사용합니다.
UNION ALL을 사용하면 쿼리 속도가 저하될 수 있으니 가능한 지양하는 것이 좋습니다.
최소한의 조인 조건이 있다면 1개의 메인 쿼리를 뽑고
하위 서브쿼리에 조인조건의 데이터를 뽑아서 Join 하는것이 좋습니다.
반응형
'데이터베이스' 카테고리의 다른 글
MSSQL 쿼리 주의사항 주요 실수 (0) | 2024.01.17 |
---|---|
[MSSQL] UNION , UNION ALL 이란 (0) | 2023.11.20 |
[SQLD] SQLD 책 추천, 노랑이 (0) | 2023.08.22 |
[SQLD] SQLD 후기 및 공부방법 (0) | 2023.06.25 |
MSSQL sp 명령어 (0) | 2023.01.23 |