0
#TEMP

TomID    Value      Name
634     38.000000   LI
634     38.000000   LI
670     38.000000   LI
722     37.240000   LI
723     37.240000   LI
724     37.240000   LI
634     2.000000    RAN
670     2.000000    RAN
722     1.960000    RAN
723     1.960000    RAN
724     1.960000    RAN
634     20.000000   TAU
670     20.000000   TAU
722     19.600000   TAU
723     19.600000   TAU

メインテーブル

TomID    Value      Name

166        77         RS
634       38         LI  
723     19.600000   TAU

一時テーブルを使用して、すべての行をメイン テーブルに挿入したい 条件: TomID AND Name が qual である場合、メイン テーブルで値を更新する必要があります。カーソルを使いたくないので、助けてください

4

2 に答える 2

1

--MERGEステートメントが役立ちます。

MERGE MainTable AS target
    USING (SELECT TomID, Value,Name from #temp) AS source (TomID, Value, Name)
    ON (target.TomID = source.TomID and target.Name = source.Name)
    WHEN MATCHED THEN 
        UPDATE SET Value = source.Value
    WHEN NOT MATCHED THEN   
        INSERT (TomID, Name,Value)
        VALUES (source.TomID, source.Name,source.Value);

マージ (Transact-SQL)

于 2013-09-23T17:12:18.003 に答える
1

MERGEステートメントを使用できます。参照

これにより、必要なものが得られると思います:

MERGE MainTable AS M
USING (SELECT * FROM #temp) AS T
ON  M.TomID = T.TomID AND M.Name = T.Name
WHEN MATCHED THEN UPDATE 
   SET M.Value = T.Value
WHEN NOT MATCHED THEN 
    INSERT(TomId, Value, Name)
    VALUES(T.TomId, T.Value, T.Name);
于 2013-09-23T17:02:20.680 に答える