我的Table1有A列,Table2有B列。
当我使用join时,(Table1.A = Table2.B)我需要创建一个临时列' Flag'并将标记值设置为' 1'匹配记录和剩余记录(Table1.A!= Table2.B)应该有标记值' 0'。
结果集应该包含表和标志值的列。
提前致谢。
答案 0 :(得分:1)
尝试使用FULL OUTER JOIN
。
SELECT *,CASE WHEN t1.A = t2.B THEN 1 ELSE 0 END Flag
FROM Table1 t1
FULL OUTER JOIN Table2 t2 ON t1.A=t2.B
答案 1 :(得分:1)
你可以使用LEFT JOIN和ISNULL,如下所示:
SELECT *,CASE WHEN t2.B IS NULL THEN 0 ELSE 1 END Flag
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.A=t2.B
用于显示右表中不匹配的值
SELECT *,CASE WHEN t1.A IS NULL OR t2.B IS NULL THEN 0 ELSE 1 END Flag
FROM Table1 t1
FULL OUTER JOIN Table2 t2 ON t1.A=t2.B
答案 2 :(得分:0)
检查以下示例:
DECLARE @tblA AS TABLE
(
ID INT,
A VARCHAR(50)
)
DECLARE @tblB AS TABLE
(
ID INT,
B VARCHAR(50)
)
INSERT INTO @tblA VALUES(1,'AA'),
(2,'CCC'),
(3,'DDD'),
(4,'FFF')
INSERT INTO @tblB VALUES(1,'AA'),
(2,'BBB'),
(3,'DDD'),
(4,'KKK')
SELECT
A.A,
B.B,
CASE ISNULL(B.B,'') WHEN '' THEN 0 ELSE 1 END AS Match
FROM @tblA A
LEFT JOIN @tblB B ON A.A=B.B