2014-12-17 3 views
1

Я хочу генерировать записи во время моей инструкции Select для каждого уникального F_ID за период с 12/31/2012 до «STARTDT первой записи для этого F_ID» в порядке возрастания со статусом FBСгенерировать дополнительные записи в операторе Select Oracle

(т.е. 15960 Я хочу, чтобы запись с

ID = 15960; Статус = 'FB'; Startdt = 12/31/2012; ENDDT а = 11/14/2013)

Примечание: Если есть уже запись до 12/31/2012, то нет необходимости генерировать для этого F_ID

(например: 16022 есть запись от 1/1/2010 поэтому никакой записи не требуется для этого F_ID)

F_ID  STATUS  STARTDT  ENDDT 
----- --------- --------- --------- 
15960 NF  11/14/2013 3/3/2014 
15960 FB  3/3/2014 12/31/9999 
16022 DF  1/1/2010 3/5/2013 
16022 FB  3/5/2013 12/31/9999 

Я помню Типовое положение с помощью UPSERT, Есть ли другой способ без использования сложного типового положения, помощь действительно оценена. Если не тогда, то как мне перейти к разделу модели

ответ

1

Не уверен, что вам нужен ответ в plsql.

На основе следующих условий:

  1. Выбрать записи, в которых мин startdt больше 12/31/2012
  2. из которых выберите записей, который содержит 'FB' как статус

Ниже приводится SQL:

select f_id, 'FB' status, '31-Dec-2012' startdt, min(startdt) enddt from ftest 
where f_id in 
(select f_id from ftest where f_id in(select oq.f_id from ftest oq where 
oq.startdt =(
select min(iq.startdt) from ftest iq 
where iq.startdt > to_date('31-DEC-2012','DD-MON-YY') 
and iq.f_id=oq.f_id 
and iq.startdt = (select min(startdt) from ftest where f_id=iq.f_id) 
)) and status='FB') GROUP BY F_ID; 

Кроме того, проверьте this sqlfiddle

+0

Спасибо за тонну за ваше время и силы. Я просто должен объединиться с основной таблицей, которую вы создали, чтобы получить в основном все записи для этого идентификатора. Почти миллион таких записей, я проверю, как будет работать производительность при запросе одной и той же таблицы несколько раз, как вы показали. оцените вашу помощь. Спасибо снова, сэр. –

+0

Я тоже думал о подобных строках, но задавался вопросом, могу ли я добиться без Союза. Кроме того, да, я не хотел использовать PLSQL –

Смежные вопросы