2017-11-02 12 views
0

2つの表があり、1つはプロセスの結果を示し、もう1つはエラーまたはその他のイベントを示しています。いくつかの列は結合できますが、他の列は結合できません。各テーブルにはユニークな列があるので、UNION ALLを使用することはできません。例えばいくつかの異なる列を持つ類似の2つの表を結合します

私は、次の列を持っている(そこに多くであるが、あなたのアイデアを得る):組み合わせることができ、各例のテーブルで

EventID | DateTime | Station | ErrMsg 

ResultID | DateTime | Station | MatNum | SerialNum 

だから、最初の3つの列は、他の人は自分の列が必要になります。

ここでの考え方は、エラーを引き起こすプロセスステップがあるかどうかを確認できるように、エラーと結果の順序を日付/時刻でオーバーレイすることです。

私はさまざまな結合、結合などを試しましたが、私が望むものを得られませんでした。

どのような考えですか?

+0

なぜあなたはそれらの両方から参加することができませんか? 'events。*、results。*'、または '*'を使って全てを取るのではなく、必要な列を指定してください。 – panther

+0

いくつの列がありますか? – SQLChao

+0

サンプルデータと目的の結果を入力してください。 –

答えて

0

最初の3列は、互換性のあるデータ型を持っているし、他の人がyou'lをする必要はありませんので、互換性のない列ごとに列を区切ります。私は弁別子列を追加して、行がどのデータソースに由来しているかすぐに知ることができます。

Select 
'E' src, EventID, DateTime, Station, NULL, NULL,  ErrMsg 
from Events 
UNION ALL 
Select 
'R' src, ResultID, DateTime, Station, MatNum, SerialNum, NULL 
from Results 
+0

ありがとうございました。私は、2番目のテーブルに一致するものがなければ、カラム名に "NULL"をつけることができないことを知りませんでした。テーブル名を追加するというアイデアが好きです。私はそれを行う方法を期待していました。 – Benaiah2320

1

これはあなたの出力を持つようにしたいどのように実際にある場合、これは技術的には、働くだろう...

Select 
EventID, DateTime, Station, ErrMsg, NULL 
from Events 
UNION ALL 
Select 
ResultID, DateTime, Station, MatNum, SerialNum 
from Results 
+0

ありがとうございました。私は、2番目のテーブルに一致するものがなければ、カラム名に "NULL"をつけることができないことを知りませんでした。 – Benaiah2320

関連する問題