Нужен SQL с логикой цепочки дат
Я хочу написать SQL (не процедуру, а SQL) для вывода, как в таблице t2 из таблицы t1. Это необходимо для проверки данных между таблицами t1 и t2. Я хочу извлечь данные из таблицы t1 на основе этой логики и хочу сравнить их с таблицей t2
У меня есть две таблицы t1 и t2. T1 имеет такие данные:
Item Id Date Item code
A 01/01/2017 10
A 02/01/2017 10
A 03/01/2017 10
...
A 15/02/2017 11
A 23/02/2017 11
...
A 25/06/2017 12
Данные в таблицах 2 идут таким образом, что поддерживается цепочка дат:
Item ID Start Date End date Item Code
A 20170101 20170214 10
A 20170215 20170624 11
A 20170625 99991231 12
Используемая база данных - Oracle Exadata.
1 ответ
Я предполагаю, что StartDate и EndDate являются минимальной и максимальной датой, связанной с item_code в вашей таблице. В этом случае - это один из способов получить t2 от t1:
select
(
select min(t1.item_date)
from t1
where t1.item_code = sel1.item_code
) min_date,
(
select max(t1.item_date)
from t1
where t1.item_code = sel1.item_code
) max_date,
sel1.item_code
from (
select distinct item_code
from t1
) sel1