SQL Query根据条件为临时列赋值

时间:2016-09-21 10:26:02

标签: sql sql-server sql-server-2008

我的Table1有A列,Table2有B列。

当我使用join时,(Table1.A = Table2.B)我需要创建一个临时列' Flag'并将标记值设置为' 1'匹配记录和剩余记录(Table1.A!= Table2.B)应该有标记值' 0'。

结果集应该包含表和标志值的列。

提前致谢。

3 个答案:

答案 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