私は結合したい各テーブルにDateを持つデータベースを持っています。私が持っている問題は、1つのテーブルに1つの日付が存在する場合に、その日付が他のテーブルに存在しない場合に指標を表示しないことです。SQL Join/Merge/Union日付に基づく複数のテーブル
DateとPersonIDに基づいて2つのSQLクエリを結合/マージしようとしています。
私は表AとBを持っているとC.
を作成したい、誰が助けることはできますか?
私は結合したい各テーブルにDateを持つデータベースを持っています。私が持っている問題は、1つのテーブルに1つの日付が存在する場合に、その日付が他のテーブルに存在しない場合に指標を表示しないことです。SQL Join/Merge/Union日付に基づく複数のテーブル
DateとPersonIDに基づいて2つのSQLクエリを結合/マージしようとしています。
私は表AとBを持っているとC.
を作成したい、誰が助けることはできますか?
あなたはCTEとUNION ALLを使用して、このような何かを行うことができるかもしれない:
WITH tableC
AS
(
SELECT personID,
person,
datekey,
date,
SUM(sales) AS sales,
NULL AS costs
FROM tableA
GROUP BY personID, person, datekey, date
UNION ALL
SELECT personID,
person,
datekey,
date,
NULL,
SUM(costs) AS costs
FROM tableB
GROUP BY personID, person, datekey, date
)
SELECT personID,
person,
datekey,
date,
ISNULL(SUM(sales), 0) AS sales,
ISNULL(SUM(costs),0) AS costs
FROM tableC
GROUP BY personID, person, datekey, date
ORDER BY datekey
これはVDKに感謝しました。 – Sanguinus
@Sanguinus嬉しいです。 – VDK
タグwikiは、「SQLでタグ付けされた質問に対する答えはISO/IEC標準SQLを使用すべきです」 - 準拠するには、 'NULL'を' CAST(NULL) AS INTEGER) 'を使用し、予約語' date'をダブルクォートで '' date "'としてエスケープします。また、正しい機能を保証するために 'ISNULL'を' COALESCE'に置き換える必要があると思います。 – onedaywhen
http://meta.stackoverflow.com/questions/285551/why-をお読みください私がアップロードしていない画像のコードを285557と受け入れた回答 –
どのDBMSを使用していますか? Postgres?オラクル? DB2?ファイアバード? –