Adattato dalla mia risposta qui:
Ottieni il numero di giorni tra i lunedì di entrambe le settimane (usando TRUNC( datevalue, 'IW' )
come NLS_LANGUAGE
metodo indipendente per trovare il lunedì della settimana) quindi aggiungere il giorno della settimana (lunedì =1, martedì =2, ecc., fino a un massimo di 5 per ignorare i fine settimana) per la data di fine e sottrarre il giorno della settimana per la data di inizio. In questo modo:
SELECT ( TRUNC( end_date, 'IW' ) - TRUNC( start_date, 'IW' ) ) * 5 / 7
+ LEAST( end_date - TRUNC( end_date, 'IW' ) + 1, 5 )
- LEAST( start_date - TRUNC( start_date, 'IW' ) + 1, 5 )
AS WeekDaysDifference
FROM your_table