Half working
select mydate,current_day,days,working_date,to_char(working_date,'DAY') from (SELECT
mydate,
current_day,
days,
CASE
-- Adjust for current day being Saturday or Sunday
WHEN TRIM(current_day) = 'SATURDAY' and (days=0 or days=-1) THEN mydate - 1
WHEN TRIM(current_day) = 'SUNDAY' and (days=0 or days=-1) THEN mydate - 2
ELSE
CASE
WHEN days > 0 AND TRIM(TO_CHAR(mydate + days, 'DAY')) = 'SUNDAY' THEN (mydate + days) - 2
WHEN days > 0 AND TRIM(TO_CHAR(mydate + days, 'DAY')) = 'SATURDAY' THEN (mydate + days) - 1
ELSE mydate + days
END
END AS working_date
FROM
(
SELECT
mydate,
TRIM(TO_CHAR(mydate, 'DAY')) AS current_day,
days
FROM
table_name
)
);