22,210
社区成员
发帖
与我相关
我的任务
分享
--测试数据
if not object_id(N'Tempdb..#A') is null
drop table #A
Go
Create table #A([a] int,[b] int,[c] int,[d] int)
Insert #A
select 1,2,3,4
GO
if not object_id(N'Tempdb..#B') is null
drop table #B
Go
Create table #B([a] int,[b] int,[c] int,[d] int)
Insert #B
select 7,2,9,10 union all
select 11,12,3,14 union all
select 5,32,41,52
Go
--测试数据结束
SELECT DISTINCT
t2.a,
t2.b,
t2.c,
t2.d,
t2.rn
FROM
(
SELECT *
FROM #A A
CROSS APPLY
(
VALUES
(A.a - A.b - A.c),
(A.a - A.b - A.d),
(A.a - A.c - A.d),
(A.b - A.c - A.d)
) t (rn)
) t1
JOIN
(
SELECT *
FROM #B B
CROSS APPLY
(
VALUES
(B.a - B.b - B.c),
(B.a - B.b - B.d),
(B.a - B.c - B.d),
(B.b - B.c - B.d)
) t (rn)
) t2
ON t2.rn = t1.rn;
;WITH taba AS (
SELECT 1 AS a,2 AS b,3 AS c,4 AS d
),tabb AS (
SELECT 7 AS a, 2 AS b, 9 AS c, 10 AS d UNION ALL
select 11,12,3,14 UNION ALL
SELECT 5,32,41,52
)
--测试数据结束
SELECT b.*,'条件1' as [条件] FROM taba AS a
INNER JOIN tabb AS b ON A.a-A.b-A.c=B.a-B.b-B.c
UNION ALL
SELECT b.*,'条件2' as [条件] FROM taba AS a
INNER JOIN tabb AS b ON A.a-A.b-A.d=B.a-B.b-B.d
UNION ALL
SELECT b.*,'条件3' as [条件] FROM taba AS a
INNER JOIN tabb AS b ON A.a-A.c-A.d=B.a-B.c-B.d
UNION ALL
SELECT b.*,'条件4' as [条件] FROM taba AS a
INNER JOIN tabb AS b ON A.b-A.c-A.d=B.b-B.c-B.d
a b c d 条件
----------- ----------- ----------- ----------- -----
7 2 9 10 条件1
11 12 3 14 条件1
7 2 9 10 条件2
11 12 3 14 条件3
11 12 3 14 条件4