34,590
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE #T1
(ID VARCHAR(10),
AA INT,
BB INT,
CC INT,
DD INT,
EE INT)
INSERT INTO #T1
SELECT 'A1',1,2,3,4,5 UNION ALL
SELECT 'A2',1,3,4,6,5 UNION ALL
SELECT 'A3',3,4,5,6,7 UNION ALL
SELECT 'A4',2,3,7,11,12 UNION ALL
SELECT 'A5',2,3,4,8,9
CREATE TABLE #T2
(ID VARCHAR(10),
X1 INT,
X2 INT,
X3 INT,
X4 INT,
X5 INT)
INSERT INTO #T2
SELECT 'B1',1,2,3,4,9 UNION ALL
SELECT 'B2',1,3,4,5,6
WITH CTE_1
AS
(SELECT ID,AA AS VALUE_T1 FROM #T1
UNION ALL
SELECT ID,BB FROM #T1
UNION ALL
SELECT ID,CC FROM #T1
UNION ALL
SELECT ID,DD FROM #T1
UNION ALL
SELECT ID,EE FROM #T1),
CTE_2
AS
(SELECT ID,X1 AS VALUE_T2 FROM #T2
UNION ALL
SELECT ID,X2 FROM #T2
UNION ALL
SELECT ID,X3 FROM #T2
UNION ALL
SELECT ID,X4 FROM #T2
UNION ALL
SELECT ID,X5 FROM #T2)
SELECT ID_B,COUNT(*) AS AMOUNT_MATCH
FROM
(SELECT ID_A,ID_B,COUNT(*) AS AMOUNT
FROM (SELECT DISTINCT ID AS ID_A FROM #T1) AS A
JOIN (SELECT DISTINCT ID AS ID_B FROM #T2) AS B ON 1=1
JOIN CTE_1 C ON A.ID_A=C.ID
JOIN CTE_2 D ON B.ID_B=D.ID AND C.VALUE_T1=D.VALUE_T2
GROUP BY ID_A,ID_B
HAVING COUNT(*)>=4) AS E
GROUP BY ID_B