公正な警告:SQLの使用は初めてです。 Oracleサーバーでは、AQTまたはSQL Developerのいずれかを使用して行います。私は、テーブルA(高品質データ)からのデータを結合したいSQL UNION ALLには、「ボトム」テーブルの新しいエントリのみが含まれます。
私は答えに私の方法を考えたり検索することができていないとして、私はあなたのことが手に自分を置く...
テーブルBからのデータ(新鮮なデータ)により、Bのエントリは、日付スタンプがテーブルAから入手可能なものよりも後に含まれるようになる。
両方のテーブルは複数のエンティティからのエントリを含み、それらの実体。場合は、
WITH
AA AS
(SELECT entity, date, SUM(value)
FROM table_A
GROUP BY
entity,
date),
BB AS
(SELECT entity, date, SUM(value)
FROM table_B
WHERE date > ALL (SELECT date FROM AA)
GROUP BY
entity,
date
)
SELECT * FROM (SELECT * FROM AA UNION ALL SELECT * FROM BB)
今:私は私の必要性を明確に願っていますいくつかのコードの試みを行っている
A____________________________ B_____________________________
entity date type value entity date type value
X 1.jan 1 1 X 1.jan 1 2
X 1.jan 0 1 X 1.jan 0 2
X 2.jan 1 1 X 2.jan 1 2
Y 1.jan 1 1 (new entry)X 3.jan 1 1
Y 3.jan 1 1 Y 1.jan 1 2
Y 3.jan 1 2
(new entry)Y 4.jan 1 1
:1月4日に
、テーブルは次のように見えるかもしれませんWHERE date > ALL (SELECT date FROM AA)
はそれぞれのエンティティごとに別々に動作しますが、私は必要なものを持っていると思います。テーブルAのデータは、多くの場合、Bのそれとは異なるので、私はすべてAからのエントリー、及びB.
からのみ、新しいエントリをしたい各エンティティのために、ある
(値は、多くの場合、修正されている)私はいけないと思う私は、次のようなものを使用できます:table A UNION ALL (table B MINUS table A)
?
おかげ
集約は、単一の日付の1つのエンティティのすべての値を超えています。表Aを使用すると、Xは1. janでSUM(値)= 2となります。さらにポイント: 'select max(a.date)from ...'は単一のmax_dateを返しませんか?私は各エンティティのために1つをご希望です... – Kjetil
@Kjetil。 。 。私が答えて言うように、あなたが定義したCTEを使ってこれを実行してください。 –
私はmax()が複数の値を返すかもしれないことを知りませんでしたので、私は少し愚かであると感じます。騒ぎに乗ってくれてありがとう。 – Kjetil