フォーマットが悪いので、これを明確にしようと思います。
表A
|---------------------|------------------|--------------|
| col1 | col2 | datetime |
|---------------------|------------------|--------------|
表B
|---------------------|------------------|--------------|
| col3 | col4 | datetime |
|---------------------|------------------|--------------|
私が探している出力は次のようなものです
|---------------------|------------------|--------------|-----------|---------------|
| col1 | col2 | col3 | col4 | datetime |
|---------------------|------------------|--------------|-----------|---------------|
基本的に、datetime列がキーであり、両方のテーブルのすべての値が含まれている必要があり(重複なし)、テーブルにあるそれぞれの値がタイムスタンプごとに表示されます(存在しない場合はNULL)。
FULL OUTER JOINを試しましたが、一部の日時がスキップされているようです。
SELECT T1.col1, T1.col2, T2.col3, T2.col4, T1.datetime
FROM T1 FULL OUTER JOIN T2 on T1.datetime=T2.datetime;
また、右結合サブクエリで左結合を試しましたが、それでもうまくいきませんでした。
これには簡単な解決策があるはずだと思います。私は何かが足りないのですか?
ありがとう!
おそらく、日時の値を「スキップ」しているわけではありません。代わりに、として表示されNULL
ます。あなたはこれを修正することができますcoalesce()
:
SELECT T1.col1, T1.col2, T2.col3, T2.col4,
COALESCE(T1.datetime, T2.datetime) as datetime
FROM T1 FULL OUTER JOIN
T2
ON T1.datetime = T2.datetime;
サポートするほとんどのデータベースFULL JOIN
は標準USING
句もサポートしているため、これを次のように表すこともできます。
SELECT T1.col1, T1.col2, T2.col3, T2.col4,
datetime
FROM T1 FULL OUTER JOIN
T2
USING (datetime);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加