Мое дело, когда заявление кажется неправильным, и я не могу понять, что не так. Он дает мне те же даты для создания времени и записей времени обновления. вот как выглядит мои данные:Случай Когда заявление с датами
T1:
ID create_time
1 08/09/2016 07:30:20AM
T2:
ID update_time
1
1 08/15/2016 09:41:46AM
Я ожидаю следующие:
ID TimeStamp
1 08/09/2016 07:30:20AM
1 08/15/2016 09:41:46AM
однако мой код возвращает значения для создания раз для 2 записей. это выглядит следующим образом:
ID TimeStamp
1 08/09/2016 07:30:20AM
1 08/09/2016 07:30:20AM
select t1.id, t1.desc,
Case
WHEN t1.create_time IS NOT NULL
THEN t1.create_time
WHEN t2.update_time IS NOT NULL
THEN t2.update_time
END AS "TimeStamp"
from t1, t2
where t1.id=t2.id
AND (t1.create_time BETWEEN TO_DATE ('01-AUG-2016 00:00:00',
'dd-mon-yyyy HH24:Mi:SS')
AND TO_DATE ('31-AUG-2016 23:59:59',
'dd-mon-yyyy HH24:Mi:SS')
OR ( t2.update_time
BETWEEN TO_DATE ('01-AUG-2016 00:00:00',
'dd-mon-yyyy HH24:Mi:SS')
AND TO_DATE ('31-AUG-2016 23:59:59',
'dd-mon-yyyy HH24:Mi:SS')
)
)
Также нужно отметить каждую запись на основе создания/обновления времени, как New/Update в отдельной колонке. Я делал это, используя случай, когда, как показано ниже:
CASE
WHEN (t1.create_time IS NOT NULL AND t2.update_time IS NULL)
THEN 'New'
WHEN t2.update_time IS NOT NULL
THEN 'Update'
END AS "Type"
, но это, кажется, принося дубликаты следующим образом:
ID TimeStamp Тип
1 08/09/2016 Новый
1 08/09/2016 Update
1 08/15/2016 Новый
1 08/15/2016 Обновление
Вы знаете, есть случаи, когда старый синтаксис Oracle для объединений не может быть предотвращено ... например, ошибка в реализации ОБНОВИТЬ БЫСТРО для материализованных представлений позволяет быстро освежать, если запрос, чтобы создать представление содержит ANSI присоединяется. Поскольку я узнал об этом, я говорю «в большинстве случаев», а не «всегда». :-) – mathguy