There are already many questions about dynamic pivot, for instance this: Dynamic pivot in oracle sql.
This query demonstrates only how to find "relevant friday" and pivot data if you know all dates:
select *
from (select quoteid,
to_char(trunc(reg_date + 2, 'iw') + 4, 'dd/mm/yyyy') friday
from t)
pivot (count(quoteid) for friday in ('20/10/2017', '13/10/2017', '06/10/2017'))
Test:
with t(quoteid, reg_date) as (
select '001', date '2017-10-02' from dual union all
select '002', date '2017-10-09' from dual union all
select '003', date '2017-10-10' from dual union all
select '004', date '2017-10-13' from dual union all
select '005', date '2017-10-13' from dual union all
select '006', date '2017-10-17' from dual)
select *
from (select quoteid,
to_char(trunc(reg_date + 2, 'iw') + 4, 'dd/mm/yyyy') friday
from t)
pivot (count(quoteid) for friday in ('20/10/2017', '13/10/2017', '06/10/2017'))
Result:
'20/10/2017' '13/10/2017' '06/10/2017'
------------ ------------ ------------
1 4 1