Попытка использовать Nextval, а также 'альтернативу Currval' в том же операторе select
Цель состоит в том, чтобы добавить новый столбец (x_event_code) с уникальными идентификаторами на основе 2 бизнес-условий.
Table : tmp_event_cd
ID Member First_Date Last_date
1 123455678 8/23/2014 8/24/2014
2 123455678 8/23/2014 8/24/2014
3 123455678 8/24/2014 8/24/2014
4 123455678 8/24/2014 8/24/2014
5 123455678 8/25/2014 8/25/2014
6 123455678 10/25/2014 10/25/2014
1 567890124 10/25/2014 10/25/2014
2 567890124 10/25/2014 10/25/2014
3 567890124 12/27/2014 12/27/2014
Psql:
Drop table if exists tmp_event_cd_1 ;
Create table tmp_event_cd_1 as
(
Select
ID,Member,First_Date,Last_date,
(Case
WHEN (ID = '1' ) then nextval('Seq_1')
WHEN (ID != '1' and First_Date::Date between
-- Member_first_Date
(FIRST_VALUE(First_date) over (partition by Member order by First_date)::Text ::date) AND
-- Member_last_date
(FIRST_VALUE(Last_date) over (partition by Member order by First_date)::Text ::date) )
then Currval('Seq_1')
/*Currval() not supported*/
/*Retain the value assigned above untill next member*/
Else nextval('Seq_1')
end ) as x_event_code
from tmp_event_cd
order by Member,id,First_Date, Last_date
)distributed randomly;
Expected final table:
ID Member First_Date Last_date x_event_code
1 123455678 8/23/2014 8/24/2014 1
2 123455678 8/23/2014 8/24/2014 1
3 123455678 8/24/2014 8/24/2014 1
4 123455678 8/24/2014 8/24/2014 1
5 123455678 8/25/2014 8/25/2014 2
6 123455678 10/25/2014 10/25/2014 3
1 567890124 10/25/2014 10/25/2014 4
2 567890124 10/25/2014 10/25/2014 4
3 567890124 12/27/2014 12/27/2014 5
"x_event_code" должен сохранить текущее значение из последовательности "Seq_1". моя версия Postgres не поддерживает его. Я попытался использовать (выберите last_value из seq_1) во втором условии, но он сохранил только одно идентичное значение, хотя nextval() увеличивается.
Я не могу использовать функцию на основе переменных, поскольку в этой таблице содержатся миллиарды записей.
Любые материалы по этому вопросу высоко ценятся.