CREATE OR REPLACE VIEW V_MOCO AS SELECT modu_code ,selling_price ,cost_price ,delivery_cost ,regi_code ,valid_from AS effective_from ,least(nvl(valid_to ,to_date('2099' ,'yyyy')) ,nvl(next_valid_from ,to_date('2099' ,'yyyy'))) AS effective_to FROM (SELECT modu_code ,selling_price ,cost_price ,delivery_cost ,regi_code ,valid_from ,valid_to ,lead(valid_from) over(PARTITION BY cost.modu_code, regi_code ORDER BY valid_from) AS next_valid_from FROM costs cost WHERE cost_type = 'MOCO') moco;