Code Listing 3: Use SQL MODEL to find the last Saturday.

SQL> select next_day( last_day( add_months( trunc( sysdate,'y' ),cell ) )-7, 
  2 to_char( to_date( '29-jan-1927', 'dd-mon-yyyy' ), 'DAY' ) )
  3  from dual
  4 model return all rows
  5 dimension by (0 attr)
  6 measures (0 cell)
  7 rules iterate (12) (
  8   cell[iteration_number] = iteration_number
  9 );

Execution Plan
------------------------------------------------------------
   0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1)
   1    0   SQL MODEL (ORDERED FAST)
   2    1     FAST DUAL (Cost=2 Card=1)
 
 
Statistics
------------------------------------------------------------
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
        666  bytes sent via SQL*Net to client
        512  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
12 rows processed