SQL を使用して異なる方法で交差している 3 つの行の異なるセグメントを取得する方法を教えてください。#t2 の 3 つの行はセット A、B、C を表します - AIB、AIC、BIC、AIBIC、A'、B'、C' などを探しています (ベン図のように 3 行で 7 つの可能なセグメント)ここで私は交差点です。
#t2 で n 行を処理できる一般的なソリューションを探しています。
-- SQL Code Begin
create table #t1 (key1 int, key2 int) -- for each Key1 there can be 1 or more Key2
go
create table #t2 (row_id int identity(101, 1), key1 int) --row_id is the primary key
go
insert into #t1
select 1, 11 union select 1, 12 union select 1, 13 union select 1, 14 union
select 2, 13 union select 2, 15 union select 2, 16 union select 2, 17 union
select 3, 13 union select 3, 12 union select 3, 16 union select 3, 17
-- 1 --> 11, 12, 13, 14
-- 2 --> 13, 15, 16, 17
-- 3 --> 13, 12, 16, 17
insert into #t2 (key1)
select 1 union select 2 union select 3
-- SQL Code End
私が探している出力は、
1001 11 (A')
1001 14 (A')
1002 12 (A I C - A I B I C)
1003 13 (A I B I C)
1004 15 (B')
1005 16 (B I C - A I B I C)
1005 17 (B I C - A I B I C)
そのうちの 2 つが NULL であるため、出力には可能な 7 つのセグメントではなく、5 つのセグメントがあります。