2014-11-18 2 views
1

SQL 서버 쿼리에 대한 도움이 필요합니다. 기존의 테이블 (#Masterfile)을 업데이트하려고 시도 중입니다. 왼쪽 테이블을 다른 외부 소스 (테이블 2)에 결합한 결과를 기반으로합니다. Row 6은 기본적으로 ID가 테이블 b에 존재하는지 여부를 나타내는 플래그입니다. 나는 SQL에 익숙하지 않았기 때문에 (단지 몇 주 전에 학습을 시작했다.) 그래서 나의 구문은 아마도 매우 기본적인 것이다. #Masterfile에 새로운 관심 표 (표 2)를 결합한 다음 결과를 선택하고 column6_flag를 업데이트합니다.왼쪽 조인 (SQL 서버) 결과로 SQL 테이블 업데이트

그러나 오류가 발생하여 (x.column9가 NULL이 아닌 경우 a.column6_flag = case, 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

단지 ... column6_flag

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

이 시도에 a.column6_flag 교체

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