2017-09-26 17 views
0

2つのテーブルがあります(1つのテーブルはxmlから作成されます)。 最初のテーブルの値とキーに基づいて、2番目のテーブルの列を更新する必要があります。最初のテーブルの値/キーに基づいて2番目のテーブルを更新します。

テーブルには同じ列があります。まず表:

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

2番目の表は、ほぼ同じである:

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

私の質問は - 最初のテーブルから最初のテーブルからORAS_NETに基づいて、第2表中のORAS_NETORAS_KEYを更新する方法?私の主な問題は、私は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

関連する問題