Create a table for the days of the week, including numbering (Sunday may be day 1 or day 7).
-- first day of the week: Sunday
create table days
as
select 1 daynumber, 'Sunday' weekday from dual
union select 2, 'Monday' from dual
union select 3, 'Tuesday' from dual
union select 4, 'Wednesday' from dual
union select 5, 'Thursday' from dual
union select 6, 'Friday' from dual
union select 7, 'Saturday' from dual ;
Then, use an outer join, plus a case expression in the SELECT, and order according to your requirements.
select
D.weekday
, case
when sum(E.qty_) is null then 0
else sum(E.qty_)
end total
from existing E
right join days D on E.day_ = D.weekday
group by D.weekday, D.daynumber
order by D.daynumber ;
-- output:
WEEKDAY TOTAL
--------- ----------
Sunday 27
Monday 5
Tuesday 20
Wednesday 0
Thursday 0
Friday 0
Saturday 0
Dbfiddle here
Create a view (without using an additional table):
create or replace view new_view
as
select
D.weekday
, case
when sum(E.qty_) is null then 0
else sum(E.qty_)
end total
from existing E
right join (
select 1 daynumber, 'Sunday' weekday from dual
union select 2, 'Monday' from dual
union select 3, 'Tuesday' from dual
union select 4, 'Wednesday' from dual
union select 5, 'Thursday' from dual
union select 6, 'Friday' from dual
union select 7, 'Saturday' from dual
) D
on E.day_ = D.weekday
group by D.weekday, D.daynumber
order by D.daynumber ;
Testing: see dbfiddle.