1

私はSQLの初心者です

[月]、[予測平均]の表1があります。温度]列として。[月]、[実際の平均]の別のテーブル2があります。温度]列として。現在、一部の日付では、表1に使用可能なレコードがありません。その場合、テーブルに使用可能なレコードがある場合は、テーブル2からレコードをプルしたいと思います。

たとえば、表1には、2010年の1年間の4月から12月までのレコードが含まれている場合があります。表2には、2010年の1月から12月までのレコードが含まれています。表1の行方不明の1月、2月、3月の月のレコードについて、表2からレコードを取得したいと思います。

何か案が。SQLServer2008を使用しています

前もって感謝します。

4

3 に答える 3

2
select [month], [forecasted avg. temperature] as temperature from table1
union
select [month], [actual avg. temperature] as temperature from table2
于 2012-04-13T15:46:29.340 に答える
2
select 
   [month], isnull([forecasted avg. temperature], [actual avg. temperature]) as temperature 
from 
   table2 left outer join table1 on table1.[month] = table2.[month]

DemsからのコメントごとにUPDATE、クエリを変更しました。元の投稿では、table2にすべての月のデータが含まれているように聞こえるので、FULL JOINではなく、table2からすべてのレコードをプルし、table1で利用可能な場合は結合し、一時的にISNULLを使用し続けるように切り替えました。table2にすべてのデータが含まれていない場合は、FULLJOINが必要です。

于 2012-04-13T15:51:55.580 に答える
0

1つの方法は、外部結合クエリを使用した結合です。

Select  [month], [forecasted avg. temperature] from Table1
Union
Select [month], [actual avg. temperature] From Table2
outer join Table1 on Table1.[Month] = Table2.Month
Where Table1.Month is null

私の頭のてっぺんから、そしてクトゥルフのために、あなたのテーブルと列に正式な名前を付けてください。

出力にわかりやすい名前が必要な場合は、次のようにします。

Select ForeCastAvgTemp As [forecasted avg. temperature] From Table1
于 2012-04-13T15:51:29.913 に答える