У меня есть запрос, который возвращает что-то вроде этого ...
Набор данных 1:
EFFECTIVE_DATE END_DATE DESC SUBPART
4/10/2011 Dairy Products Processing L
4/10/2011 360 CMR 10.000
4/1/2011 4/9/2011 Dairy Products Processing A
4/1/2011 4/9/2011 Ferroalloy Manufacturing A
Я ищу запрос, который возвращает этонабор данных, подобный этому ...
Набор данных 2:
EFFECTIVE_DATE END_DATE DESC SUBPART
4/10/2011 Dairy Products Processing L
360 CMR 10.000
4/1/2011 4/9/2011 Dairy Products Processing A
Ferroalloy Manufacturing A
Обратите внимание, что повторяющиеся даты вступления в силу (4/10/2011 - {ноль} и 4/1/ 2011 - 4/9/2011) подавляются при дублировании.
Редактировать 1: В ответ на ответ @Justin Cave,
Ниже мой запрос объединен с ДжастиномШаблон пещеры.Это близко, но немного.Даты и описания кажутся немного перепутанными с тем, чем они должны быть (данные в наборе данных должны быть такими же, как в Набор данных 2: . Я думаю, что это может иметь какое-то отношение к моему заказуно я не уверен.
SELECT (CASE WHEN effective_date = prior_effective_date
THEN null
ELSE effective_date
END) effective_date,
(CASE WHEN end_date = prior_end_date
THEN null
ELSE end_date
END) end_date,
cfr_part_desc ,
cfr_subpart
FROM
(SELECT c.effective_date,
lag(c.effective_date) over (order by c.effective_date desc, cpl.cfr_part_desc asc) prior_effective_date,
c.end_date,
lag(c.end_date) over (order by c.effective_date desc, cpl.cfr_part_desc asc) prior_end_date,
cpl.CFR_PART_DESC as cfr_part_desc,
cd.CFR_SUBPART as cfr_subpart
from table1 c
inner join table2 cd ON c.IND_ID = cd.IND_ID
AND cd.EFFECTIVE_DATE = c.EFFECTIVE_DATE
inner join table3 cpl on cd.CFR_PART_L_S = cpl.CFR_PART_L_S
inner join table4 f on c.ind_id = f.ind_id
inner join table5 p on f.ind_id = p.ind_id
where p.PERMIT_S = '4988'
order by c.effective_date desc, cpl.CFR_PART_DESC asc
);
Редактировать 2: Неправильные данные были связаны с неоднозначным определением даты вступления в силу столбца.теперь работает правильно.