2014-11-18 2 views
1

Мне нужна помощь с запросом SQL-сервера. Я пытаюсь обновить существующую таблицу (#Masterfile), основываясь на результатах левого соединения таблицы с другим внешним источником (таблица 2). Строка 6 - это в основном флаг, указывающий, существует ли идентификатор в таблице b или нет. Я новичок в sql (только начал учиться пару недель назад), поэтому мой синтаксис, вероятно, очень простой. Я ушел, присоединившись к #Masterfile с новой представляющей интерес таблицей (Таблица 2), а затем выберите результат (и обновить column6_flag).Обновление таблицы sql с результатами из левого соединения (sql server)

Тем не менее, я получаю ошибку, идентифицирующую оператор (, a.column6_flag = случай, когда 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 

ответ

-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 
+0

Это сработало! Спасибо!!! –

+0

Нет проблем. Я не знаю, почему кто-то проголосовал за это! –

1

Заменить a.column6_flag только с column6_flag

column6_flag = case when x.column9 is not NULL then 1 else 0 end 
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 
Смежные вопросы