SQL을 사용하여 서로 다른 방식으로 교차하는 세 행의 다른 세그먼트를 가져 오는 방법을 알려주십시오. # t2의 세 줄은 AIB, AIC, BIC, AIBIC, A ', B', C '등 (벤 다이어그램에서와 같이 3 개의 행으로 구성된 7 개의 가능한 세그먼트)을 찾고 있습니다. 나는 어디에서 교차점인가.SQL에서 행 나누기
# 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)
출력은 5 개 세그먼트를 가지고, 대신 그들의 2로 가능한 7 NULL입니다.
실제로 편집하지 않은 섹션 앞의 공백을 제거하기 위해 질문을 편집 할 수 있습니다. 당신이 여기있는 그대로 읽는 것은 정말로 어렵습니다. – Randy
질문에 대한 이해를 도울 수 있습니다. 편지는 어디에서 왔습니까? 결과에 정말로 편지를 원하십니까? 그렇다면 할당하는 규칙은 무엇입니까? 또한 숫자 12, 16 및 17의 결과를 이해할 수 없습니다. 결과에 A, B 및 C의 교차 부분을 포함시키는 이유는 무엇입니까? –
질문을 수정하면 정확할까요? # t1.key2의 고유 값과 # t2의 어떤 레코드가 구성원인지를 원하게됩니다. –