As promised, the modified SQL query was:
WITH
Test_Availability_Dates As
(SELECT audit_date, record_key0
FROM audit_values
WHERE table_name = 'TEST' And field_name = 'STATUS' And (value_before Is NULL Or value_before = 'U') And value_after = 'V'),
Test_Completion_Dates As
(SELECT audit_date, record_key0
FROM audit_values
WHERE table_name = 'TEST' And field_name = 'STATUS' And value_before IN ('V', 'P') And value_after = 'C')
SELECT s.id_numeric, s.sample_name, s.login_date, s.dateresreq, t.analysis, t.test_number,
s.dateresreq-s.login_date As DeadlineTerm,
NVL2((SELECT audit_date FROM Test_Availability_Dates WHERE record_key0 = t.test_number),
(SELECT audit_date FROM Test_Availability_Dates WHERE record_key0 = t.test_number),
s.date_started) As Date_Test_Available,
(SELECT audit_date FROM Test_Completion_Dates WHERE record_key0 = t.test_number) As Date_Test_Completed,
(SELECT audit_date FROM Test_Completion_Dates WHERE record_key0 = t.test_number) -
NVL2((SELECT audit_date FROM Test_Availability_Dates WHERE record_key0 = t.test_number),
(SELECT audit_date FROM Test_Availability_Dates WHERE record_key0 = t.test_number),
s.date_started) As WaitTime,
FROM sample s
JOIN test t
ON s.id_numeric = t.sample
JOIN versioned_analysis va
ON t.analysis = va.identity
WHERE t.status <> 'X' And
va.group_id = :parameter1 And
(SELECT audit_date FROM Test_Completion_Dates WHERE record_key0 = t.test_number)
BETWEEN to_date(:parameter2, 'DD-MON-YY') AND to_date(:parameter3, 'DD-MON-YY')+1
And, actually, the execution time improvement was about 95%.