SQL在视图中使用左联接添加列
我有一个表,其中我希望根据另一个带有where子句的表添加一列SQL在视图中使用左联接添加列,sql,sql-server,sql-server-2008,select,left-join,Sql,Sql Server,Sql Server 2008,Select,Left Join,我有一个表,其中我希望根据另一个带有where子句的表添加一列IS\u TRUE 即:我有一个名为Employee的表,还有一个名为Manager的表,现在我想在表Employee中插入/添加IS_True列,基于: A.ID = B.ID where ((A.Name Is Not Null) and (B.ID is null)) 正在寻找一个不复制表Employee中数据的视图 表员工 ID|Name|Salary 1|B |333 3|B |333 4|B |333
IS\u TRUE
即:我有一个名为Employee
的表,还有一个名为Manager
的表,现在我想在表Employee
中插入/添加IS_True
列,基于:
A.ID = B.ID where ((A.Name Is Not Null) and (B.ID is null))
正在寻找一个不复制表Employee
中数据的视图
表员工
ID|Name|Salary
1|B |333
3|B |333
4|B |333
1|B |333
表Manager
ID |Name
1 |A
3 |B
4 |B
Null|A
结果:
ID|Name|Salary|IS_True
1|B |333 |YES
3|B |333 |NO
4|B |333 |NO
1|B |333 |YES
尝试以下操作:添加带有连接的where子句
SELECT a.*,
CASE WHEN a.name IS NOT NULL AND b.id IS NULL
THEN 'YES'
ELSE 'NO'
END AS is_true
FROM employee a
LEFT JOIN (SELECT DISTINCT id FROM manager) b ON a.id = b.id
where b.name is null
也许可以用几行样本数据和预期结果来扩展你的问题?你能解释一下你是如何在结果表中得到“是”的数据的吗?你的条件:A.ID=B.ID其中((A.Name不为Null)和(B.ID为Null))A.ID=B.ID和B.ID不可能为Null,即使A.ID为Null。尼钦,我给出的逻辑在A.ID和B.ID唯一时不起作用,但在我们有重复项时起作用。。要知道条件是否为trueHi Mureinik,这实际上是在创建重复项,我只想更新employee表中的记录。@SAK更新了我的查询以使用
distinct
-应该解决它-请尝试?
SELECT a.*,
CASE WHEN a.name IS NOT NULL AND b.id IS NULL
THEN 'YES'
ELSE 'NO'
END AS is_true
FROM employee a
LEFT JOIN (SELECT DISTINCT id FROM manager) b ON a.id = b.id
where b.name is null