2017-06-29 25 views
0

私はプロットのテーブルと天気予報テーブルを持っています。それらは両方ともGeographicalPlotIDフィールドによってリンクされています。SQL Server:キー値が同じ別のテーブルから最大値を1つのテーブルに挿入

私は各プロットのWeatherDataPulledフィールドに、そのプロットの天気表にある最新の値を挿入したいと思います。

私はこのクエリを使用していますが、これは動作しません。マルチパート識別子はバインドできません。私は運がない内部結合を試みました。

insert into 
ControlTable(WeatherDataPulled) 
select 
max(Time) 
from WeatherData 
where (ControlTable.PlotID = WeatherData.PlotID 
and ControlTable.PlotID is not null) 

参加は、このように見えた:

inner join 
WeatherData 
on 
ControlTable.PlotID = WeatherData.PlotID 

私はこの作業を取得するために何をする必要があるか上の任意のアイデア?

+0

あなたは 'JOIN'で何を試しましたか?そのSQLクエリを追加してください。本当に既存の行を挿入または更新したいですか? –

答えて

1

おそらく、更新ステートメントが必要であり、挿入ステートメントは必要ないと思います。
ではなく、これを試してみてください:

UPDATE ControlTable 
SET WeatherDataPulled = MAX([TIME]) 
FROM ControlTable 
INNER JOIN WeatherData ON ControlTable.PlotID = WeatherData.PlotID 
+0

これはむしろ、 SET WeatherDataPulled = MAX([TIME]) WeatherDataから ? –

0

をゾハルが指摘したように、私は愚かなのインサートを使用しての代わりに、更新されました。集計は、UPDATE文のセットリストには表示されない場合がありますので、ゾラによって提案されたアプローチは、エラーにつながることを

update ControlTable set WeatherDataPulled= (select max(Time) from WeatherData where ControlTable.PlotID = WeatherData.PlotID)

1

注:

は、この作業を手に入れました。

こちらをご覧ください:Update statement containing aggregate not working in SQL server

あなたの更新ステートメントを(下のあなたの答えに書かれたように)正常に動作し、したがって、あなたの質問に正しい答えであるサブクエリが含まれています。

関連する問題