Since you say TRANSPOSE (PIVOT) does not work in 9i you can try this in lieu of CASE statement. Though there are subqueries it is easier than using CASE in this particular context. (Just check the part to_char(<date>, 'day') - that it returns Day of Week - I got that on Google)
select mon.*, tue.*, wed.* .. sun.*
from
(
select machine, to_char(oeedate, 'mm/dd/yyyy') monday, shift1_mon, shift2_mon, shift3_mon
from plannedproductiontimes
where upper(substr(to_char(oeedate, 'day'), 1, 3)) = 'MON'
and machine = '500'
) mon,
(
select to_char(oeedate, 'mm/dd/yyyy') tuesday, shift1_tue, shift2_tue, shift3_tue
from plannedproductiontimes
where upper(substr(to_char(oeedate, 'day'), 1, 3)) = 'TUE'
and machine = '500'
) tue,
...
...
(
) sun
where to_date(tuesday, 'mm/dd/yyyy') = to_date(monday, 'mm/dd/yyyy') + 1
and to_date(wednesday, 'mm/dd/yyyy') = to_date(monday, 'mm/dd/yyyy') + 2
...
...
and to_date(sunday, 'mm/dd/yyyy') = to_date(monday, 'mm/dd/yyyy') + 6
order by machine, to_date(monday, 'mm/dd/yyyy')
;