表1
P R E Value
X 1 10 1
Y 2 30 2
Z 3 CR 3
X 1 30 4
表2
P R E Value
X 1 CR 4
Y 2 10 5
Y 3 CR 6
W 1 30 7
Query1 - 合并这两个表。我可以使用union子句实现这一点。
查询2 - 在合并表上选择除P,R&组合的条目以外的所有记录。 Ë;有类似的记录,唯一不匹配的'E'为30& 10,然后忽略E为30的记录。如果只有30,则考虑它。
条件:
预期输出表
P R E Value
X 1 10 1
Z 3 CR 3
X 1 CR 4
Y 2 10 5
Y 3 CR 6
W 1 30 7
忽略记录
Y 2 30 2
X 1 30 4
答案 0 :(得分:0)
我能够通过以下查询实现您想要的结果集。
insert into #Table1
values ('X','1','10','1'),
('Y','2','30','2'),
('Z','3','CR','3'),
('X','1','30','4')
insert into #Table2
values ('X','1','CR','4'),
('Y','2','10','5'),
('Y','3','CR','6'),
('W','1','30','7')
--Query2
select * from(
--Query1
select * from #Table1 union select * from #Table2) x
where E != '30' OR
(
E = '30' AND P+':'+R NOT IN
(
--Modified Query1
select P+':'+R from #Table1 where E = '10'
union
select P+':'+R from #Table2 y where E = '10'
)
)
order by Value