2014-02-18 2 views
0

테이블 레코드를 업데이트하는 쿼리가 있습니다.두 개의 서로 다른 테이블에서 레코드를 업데이트하는 쿼리

[DB_1].[dbo].[tbl_Customer] 

나는까지보고 싶은 것 :

[DB_2].[dbo].[tbl_Customer] 

내가 어떻게가에 있다고 할 수있는 고객이 존재하지 않을 때

UPDATE #TEMP 
    SET [fld_LastName] = CustomerProfile.fld_LastName 
    ,fld_FirstName = CustomerProfile.fld_FirstName 
    ,fld_BirthDate = CustomerProfile.fld_BirthDate 

FROM [DB_1].[dbo].[tbl_Customer] AS CustomerProfile --c 
WHERE CustomerProfile.fld_CustomerNo = #TEMP.fld_CustomerNo 

나는 레코드를 업데이트 할 SQL 쿼리?

고마워요.

답변

0

이 당신을 위해 작동합니다 :

UPDATE B 
SET [fld_LastName] = CustomerProfile.fld_LastName 
,fld_FirstName = CustomerProfile.fld_FirstName 
,fld_BirthDate = CustomerProfile.fld_BirthDate 
FROM [DB_1].[dbo].[tbl_Customer] AS CustomerProfile INNER JOIN #TEMP B 
ON CustomerProfile.fld_CustomerNo = B.fld_CustomerNo 
WHERE B.[fld_LastName] IS NULL OR B.fld_FirstName IS NULL OR B.fld_BirthDate IS NULL 
0

당신은 하나의 업데이트와 함께 할 수 있습니다. 이런 식으로 뭔가가 : - 해당 필드도 널 (NULL) 경우

DECLARE @a TABLE (id INT, val INT) 
DECLARE @b TABLE (id INT, val INT) 
DECLARE @c TABLE (id INT, val INT) 

INSERT @a SELECT 1,NULL UNION SELECT 2,NULL UNION SELECT 3,30 
INSERT @b SELECT 1,10 
INSERT @c SELECT 1,20 UNION SELECT 2,20 

SELECT * FROM @a 

UPDATE @a 
    SET val = COALESCE(b.val,c.val,a.val) 
    FROM @a a 
     LEFT JOIN 
     @b b ON a.id=b.id 
     LEFT JOIN 
     @c c ON a.id=c.id 

SELECT * FROM @a 

이것은 당신이 db_1을 값을 NULL로 DB_2에서 NULL 값을하지 선호하는 것으로 가정합니다.

UPDATE #TEMP 
    SET fld_LastName = COALESCE(b.fld_LastName,c.fld_LastName,a.fld_LastName) 
     ,fld_FirstName = COALESCE(b.fld_FirstName,c.fld_FirstName,a.fld_FirstName) 
     ,fld_BirthDate = COALESCE(b.fld_BirthDate,c.fld_BirthDate,a.fld_BirthDate) 
FROM #Temp a 
     LEFT JOIN 
     DB_1.dbo.tbl_Customer b ON a.fld_CustomerNo = b.fld_CustomerNo 
     LEFT JOIN 
     DB_2.dbo.tbl_Customer c ON a.fld_CustomerNo = c.fld_CustomerNo 
관련 문제