본문 바로가기
MS-SQL

차집합

by 캡틴노랑이 2016. 12. 28.
반응형

차집합 


위와 같이 A 테이블에는 1,2,3,4,5가 있고, 

              B 테이블에는 1,2,3이 있다. 

집합 A에서 집합 B를 뺀 차집합은 4,5가 된다. 

수학 기호로는 A-B={4,5} 이다. 



--가장 간결한 방법 

SELECT ID 

FROM A 

EXCEPT 

SELECT ID 

FROM B 


EXCEPT 및 INTERSECT 

두 쿼리의 결과를 비교하여 고유한 값을 반환합니다. 

EXCEPT는 오른쪽 쿼리에 없는 고유한 값을 왼쪽 쿼리에서 반환합니다. 

INTERSECT는 INTERSECT 피연산자의 왼쪽과 오른쪽에 있는 두 쿼리에 의해 반환된 고유한 값을 반환합니다. 

참고 : http://msdn.microsoft.com/ko-kr/library/ms188055.aspx 



 



--NOT IN을 이용한 방법 

SELECT ID 

FROM A 

WHERE ID NOT IN (SELECT ID FROM B ) 

/* 부연참고 : http://smartweb.tistory.com/4 */


--IS NULL을 이용한 방법 

SELECT A.ID 

FROM ( SELECT ID FROM A ) A 

LEFT JOIN ( SELECT ID FROM B ) B ON B.ID=A.ID 

WHERE B.ID IS NULL



샘플
1
2
3
4
5
6
7
8
9
SELECT
  A.TotalClsNo
, 'ZZ' AS StndConstCode
, '기타공사' AS StndConstName
, SUM(A.TotAmt) AS TotAmt  
FROM RowData A
LEFT OUTER JOIN SumDataJoin B ON A.StndConstCode LIKE B.StndConstCode + '%'
WHERE B.StndConstCode IS NULL
GROUP BY A.TotalClsNo


반응형

댓글