Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL在视图中使用左联接添加列_Sql_Sql Server_Sql Server 2008_Select_Left Join - Fatal编程技术网

SQL在视图中使用左联接添加列

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

我有一个表,其中我希望根据另一个带有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
 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