CREATE OR REPLACE VIEW V_AICO AS
SELECT id
      ,adit_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 id
              ,adit_code
              ,selling_price
              ,cost_price
              ,delivery_cost
              ,regi_code
              ,valid_from
              ,valid_to
              ,lead(valid_from) over(PARTITION BY cost.adit_code, regi_code ORDER BY valid_from) AS next_valid_from
          FROM costs cost
         WHERE cost_type = 'AICO');
