반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- spring
- Visual Studio 2015 강제 삭제
- 웹 자동화
- vue.js
- 리버스 프록시 예제
- Vue3 configureWebpack
- javascript
- .NET Core
- Visual Studio 패키지에 실패했습니다.
- Selenium 환경
- Visual Studio 2015 설치
- Nginx Reverse Proxy
- Tomcat Error
- SQLP
- 웹 크롤링
- Visual Studio 재설치
- Visual Studio 2015 삭제
- 디자인 패턴 사례
- Visual Studio 강제 삭제
- Vue.config
- MSSQL 문자열
- vue
- MSSQL 동적 쿼리
- Vue configureWebpack
- Selenium 설치
- vue3
- 업무 자동화
- tomcat
- .NET Core Proxy
- 프록시 예제
Archives
- Today
- Total
금백조의 개발 블로그
[MSSQL]FULL OUTER JOIN 개념 및 예제(FULL JOIN 합집합) 본문
반응형
서론
개발 요구 사항 중 기준일자 별로 변경된 품목의 설계서를 비교해야 하는 요구 사항이 있었습니다. 예를 들어 A품목이 있다면 2021-01-01 일자의 A품목의 부품은 B1, B2, C1이었는데 2021-07-17 일자의 A품목 부품은 B1, B3, C3로 변경될 수 있습니다. 이 경우 아래와 같이 부품의 순서는 유지하면서 추가, 삭제된 부품엔 빈 행을 추가하여 데이터를 조회해야 했습니다.
저는 두 데이터를 비교하여 빈행을 추가시키기 위해 FULL OUTER JOIN을 사용하여 해결했습니다. 따라서 이번 포스팅에서는 위 과정 속에서 알게된 FULL OUTER JOIN의 개념과 예제에 대해 정리해보겠습니다.
본론
[구문 형식]
SELECT ...
FROM T1 FULL OUTER JOIN T2 ON T1.COL1 = T2.COL1...
[특징]
- FULL OUTER JOIN 은 위 그림과 같이 테이블(T1,T2) 간의 합집합을 나타냅니다.
- T1에는 존재하고 T2에는 존재하지 않는 컬럼값, T2에는 존재하고 T1에는 존재하지 않는 컬럼값 모두 NULL로 표현됩니다.
[예제]
SELECT
A.ITEM,
A.CHILD_ITEM,
B.ITEM,
B.CHILD_ITEM,
CASE WHEN A.SEQ IS NULL THEN B.SEQ ELSE A.SEQ END AS SEQ--부품의 순서를 유지하기 위한 가공 컬럼 추가
FROM
(
SELECT 'A' ITEM, 'B1' CHILD_ITEM, 1 SEQ
UNION ALL
SELECT 'A' ITEM, 'B2' CHILD_ITEM, 2 SEQ
UNION ALL
SELECT 'A' ITEM, 'C1' CHILD_ITEM, 3 SEQ
)A
FULL JOIN
(
SELECT 'A' ITEM, 'B1' CHILD_ITEM, 1 SEQ
UNION ALL
SELECT 'A' ITEM, 'B3' CHILD_ITEM, 2 SEQ
UNION ALL
SELECT 'A' ITEM, 'C3' CHILD_ITEM, 3 SEQ
)B ON A.ITEM = B.ITEM AND A.CHILD_ITEM = B.CHILD_ITEM
ORDER BY SEQ
[실행 결과]
결론
양쪽 데이터 간의 비교를 할 때 추가, 삭제된 데이터를 양쪽 다 빈 행으로 표기해야 하는 요구사항이 꽤 있는 것 같습니다. 이 경우 FULL JOIN을 이용하면 쉽게 빈행을 추가할 수 있는 좋은 방법이라고 생각됩니다.
Reference
[Microsoft Docs] - [SQL] - [FROM 절과 JOIN, APPLY, PIVOT(Transact-SQL)]
https://docs.microsoft.com/ko-kr/sql/t-sql/queries/from-transact-sql?view=sql-server-ver15
반응형
'Database > SQL Server(MSSQL)' 카테고리의 다른 글
[MSSQL]집계함수(Aggregate Function)를 이용하여 특정 값(0...)을 제외, NULL을 포함하고 집계하기 (0) | 2021.12.22 |
---|---|
[MSSQL]FOR XML PATH 사용시CHAR(13) 문자열이 
 로 바뀌는 현상 해결 방법 (0) | 2021.10.25 |
[MSSQL]분석 함수 개념 및 예제(윈도우 함수) (0) | 2021.07.09 |
[MSSQL]LAG, LEAD 함수를 이용한 이전행, 다음행 조회 방법 (0) | 2021.06.20 |
[MSSQL]SSMS에서 쿼리 바로 가기 설정하기(SQL Server Management Studio) (0) | 2021.05.07 |