使用左连接(sql server)的结果更新sql表

时间:2014-11-18 00:15:47

标签: sql sql-server

我需要SQL服务器查询的帮助。我尝试更新现有表(#Masterfile),基于左表连接表与另一个外部源(表2)的结果。第6行基本上是一个标志,表明ID是否存在于表b中。我是sql的新手(刚刚开始学习几周),所以我的语法可能非常基础。我离开了加入#Masterfile的新兴趣表(表2),然后选择结果(并更新column6_flag)。

然而,我得到错误,识别语句(,a.column6_flag = case,当x.column9不为NULL然后1 else 0 end)作为罪魁祸首。任何帮助将非常感激!!!我尝试再次查看语法的情况,但无法确定它产生错误的原因。当我在查询的一部分时注释掉它的情况时,它可以工作。

再次感谢!

--Insert into #MasterFile 
 select distinct
     a.column1
     , a.column2
     , a.column3
     , a.column4
     , a.column5
     , a.column6_flag = case when x.column9 is not NULL  then 1 else 0 end
     , a.column7
     , x.column9
from 
    #Alldata a
left join 
    (select m.column9
     from #Masterfile m
     left join table2 n on m.id = n.id) x on a.id = x.id

3 个答案:

答案 0 :(得分:1)

a.column6_flag替换为column6_flag

column6_flag = case when x.column9 is not NULL  then 1 else 0 end

答案 1 :(得分:0)

试试这个......

SELECT DISTINCT column1,
                column2,
                column3,
                column4,
                column5,
                column6_flag = CASE
                                 WHEN x.column9 IS NOT NULL THEN 1
                                 ELSE 0
                               END,
                column7,
                x.column9
FROM   #Alldata a
       LEFT JOIN (SELECT m.id,
                         m.column9
                  FROM   #Masterfile m
                         LEFT JOIN table2 n
                                ON m.id = n.id) x
              ON a.id = x.id 

答案 2 :(得分:-1)

你只需要移动案例就可以这样:

select distinct
a.column1
, a.column2
, a.column3
, a.column4
, a.column5
, case when x.column9 is not NULL  then 1 else 0 end AS column6_flag
, a.column7
, x.column9
from #Alldata a
left join 
(
select 
m.column9
from #Masterfile m
left join table2 n
on m.id=n.id
) x
on a.id=x.id