Яркое предупреждение: я новичок в использовании SQL. Я делаю это на сервере Oracle либо через AQT, либо с помощью SQL Developer.SQL UNION ALL включает только новые записи из таблицы «bottom»
Как я уже не в состоянии думать или искать свой путь к ответу, я ставлю себя в ваших умелых руках ...
Я хотел бы объединить данные из таблицы A (данные высокого качества) с данными из таблицы B (свежие данные), так что записи из B включаются только тогда, когда штамп даты более поздний, чем те, которые доступны из таблицы A.
Обе таблицы включают в себя записи из нескольких объектов, а последний штамп даты варьируется в зависимости от эти организации.
С 4-го января, таблицы может выглядеть примерно так:
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
Я сделал попытку в какой-то код, который я надеюсь прояснить мою потребность:
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)
Теперь, если WHERE date > ALL (SELECT date FROM AA)
будет работать отдельно для каждой сущности, я думаю, имею то, что мне нужно.
То есть, для каждого объекта, я хочу, чтобы все элементы из A, и только новые записи из B.
Как видно из данных таблицы А часто отличается от B (значения часто исправленный) Я не думаю, что я может использовать что-то вроде: table A UNION ALL (table B MINUS table A)
?
Благодаря
Агрегация по всем значениям для одного объекта за одну дату. Используя таблицу A, X имеет значение SUM (значение) = 2 на 1. jan. Подробнее: не выбрал ли max (a.date) из ... 'вернуть один max_date? Я хотел бы один для каждого объекта ... – Kjetil
@Kjetil. , ,Как я уже сказал в ответ, просто запустите это, используя определенные вами CTE. –
Я чувствую себя немного застенчивым, так как не знал, что max() может возвращать несколько значений. Большое спасибо за то, что вы поместились с noob. – Kjetil