2017-09-26 2 views
0

두 테이블이 있습니다 (하나의 테이블은 xml에서 생성됩니다). 첫 번째 테이블의 값과 키를 기반으로 두 번째 테이블의 열을 업데이트해야합니다.첫 번째 테이블의 값/키를 기반으로 두 번째 테이블을 업데이트하십시오.

표에는 동일한 열이 있습니다. 첫 번째 테이블 :

DECLARE @tblORAS_NET TABLE 
     (    
      ORAS_KEY INT, 
      ORAS_NET DECIMAL(15,4) 
     ) 

두 번째 표는 거의 동일합니다

DECLARE @tblORAS_NET1 TABLE 
      (    
       ORAS_KEY INT, 
       ORAS_NET DECIMAL(15,4) 
      ) 

내 질문은 - 어떻게 첫 번째 테이블에서 첫 번째 테이블에서 ORAS_NETORAS_KEY에 기초하여 제 2 테이블에 ORAS_NET을 업데이트? 내 주요 문제는 내가 어디 ORAS_KEY에 조건을 쓰는 방법을 모르겠다 동시에 ORAS_NET을 얻을 수 있습니까? 나는 이것이 당신이 원하는 업데이트 문이라고 생각

declare @xml_ORAS_NET xml = '<DataTable> 
<TR><ORAS_KEY>1</ORAS_KEY><ORAS_NET>284.03</ORAS_NET></TR> 
<TR><ORAS_KEY>2</ORAS_KEY><ORAS_NET>543.12</ORAS_NET></TR> 
<TR><ORAS_KEY>3</ORAS_KEY><ORAS_NET>981.91</ORAS_NET></TR> 
</DataTable>'; 

DECLARE @tblORAS_NET TABLE 
     (    
      ORAS_KEY INT, 
      ORAS_NET DECIMAL(15,4) 
     ) 

     IF (@xml_ORAS_NET IS NOT NULL) 
     BEGIN 
      INSERT INTO @tblORAS_NET (ORAS_KEY, ORAS_NET) 
     SELECT 
      DataTable.TR.value('ORAS_KEY[1]','INT') AS ORAS_KEY, 
      DataTable.TR.value('ORAS_NET[1]','DECIMAL(15,4)') AS ORAS_NET 
     FROM @xml_ORAS_NET.nodes('/DataTable/TR') DataTable(TR) 
     END 


      select * from @tblORAS_NET 


    DECLARE @tblORAS_NET1 TABLE 
     (    
      ORAS_KEY INT, 
      ORAS_NET DECIMAL(15,4) 
     ) 

     insert into @tblORAS_NET1(oras_key) values(1),(2),(3) 

     select * from @tblORAS_NET1 

답변

2

- 당신은 내가 어둠 속에서 자상의 비트를 복용하고있어 귀하의 예상 결과를 언급하지 않은하지만 ...

update net1 
    set net1.ORAS_NET = net.ORAS_NET 
    from @tblORAS_NET net 
    join @tblORAS_NET1 net1 
    on net.ORAS_KEY = net1.ORAS_KEY 
+3

HTTP : //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx 이것이 올바른 방향 인 것처럼 보입니다. –

+0

그건 공정한 경찰이야, 션. 내 대답을 업데이트하여 '조인'을 사용합니다. – Brett

관련 문제