2016-11-29 9 views
0

OK、私の最初の質問はここにあります。T-SQLマージアップデートでSelectステートメントをソースとして使用する方法

私はT-SQLとMSSQL Serverの初心者ですので、辛抱してください。

私はMERGEコマンドを少し使っていて、データベースの一部のテーブルを同期させるのに使っています。それはこれまでのところうまくいきました。

私の質問はこれです。私は生産データが毎日入ってくるテーブルを持っており、データの一部には生産されている個々のケースのNetWeightが含まれています。

プロダクトコードを基にボックスの平均重量を計算し、生産データを調べるクイック選択クエリがわかりました。

select ProductCode, AVG(NetWeight) FROM dbo.Production 
Group By ProductCode 
Order by ProductCode 

私のProductMasterテーブルには、AverageWeightの列があります。

私がしたいのは、自分のSelect Queryを、ProductMasterテーブルのAverageWeight列を更新するために使用できるマージコマンドのソースとして使用することです。

作業が完了したら、これをストアドプロシージャに変えて実行するようにスケジュールして、プラントで新しい製品が実行されたときにProductMasterテーブルが自動的に更新されるようにして、平均ケースウェイトを最新の状態に保ちます。

私の理解では、MergeのソースとしてSelect Queryを使用することはできますが、どのように動作するかの良い例は見つかりませんでした。 、またはエラーが発生します。「」あなたがして文を終了しなければなりませんマージ使用するとき

alter table ProductMasteradd AverageWeight number 

merge into ProductMaster t 
using(
    select 
     ProductCode 
     , AverageWeight = AVG(NetWeight) 
    from dbo.Production 
    group By ProductCode 
    order by ProductCode 
    )s 
on t.ProductCode = s.ProductCode 
when matched then update 
set t.AverageWeight = s.AverageWeight; 

注:製品コードを仮定 おかげ

+0

こんにちは、ようこそ。あなたがここで何をしようとしているのか分かりません。おそらく、テーブル構造、いくつかのデータと望ましい出力を共有することは役に立ちます。ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

答えて

0

は次のように列です。