SQL Server EXCEPT

EXCEPT

EXCEPT は、ユニオンクエリと呼ばれ、1つのクエリ結果から別のクリエ結果を差し引いて重複を取り除き結果を返します。
ユニオンクエリには、UNION, INTERSECT 句もあります。

ちなみに、SQL Server には、EXCEPT ALL はありません。

EXCEPT の使い方

1つの目のクエリ結果から、次のクリエ結果を差し引いて、重複を取り除き、結果を返します。

以下に簡単な例を書きます。
tble1の結果からtbl2と同じ結果(行)があるものを取り除き結果を返しています。

declare @tbl1 table(a_cd char(9), b_kbn char(1), c_kbn int)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000001','1',0)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000010','1',1)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000020','2',1)
insert into @tbl1 (a_cd,b_kbn,c_kbn) values ('000000030','3',1)

declare @tbl2 table(a_cd char(9), b_kbn char(1), c_kbn int)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000001','1',0)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000010','1',1)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000020','2',1)
insert into @tbl2 (a_cd,b_kbn,c_kbn) values ('000000030','3',2)

select * from @tbl1
except
select * from @tbl2

left join 句を使用して同じこともできますが、EXCEPT 句を使った方がシンプルですね。

select t1.* from @tbl1 t1
left join @tbl2 t2
on t1.a_cd = t2.a_cd
and t1.b_kbn = t2.b_kbn
and t1.c_kbn = t2.c_kbn
where t2.a_cd is null

以上、EXCEPT の簡単な使用方法でした。