You seem to be very, very confused. Did you know this is a SQL Forum, not Oracle?
There is no CASE statement in SQL. We have a CASE expression! This is a fundamental concept, regardless of what SQL product you have.
There is no such crap as a generic “status” in RDBMS-- marriage? Employment? Graduation?
I need to determine the average call time between two times when a status is either active or in work: <<
Please follow basic Netiquette and post the DDL we need to answer this. Follow industry and ANSI/ISO standards in your data. You should follow ISO-11179 rules for naming data elements. You should follow ISO-8601 rules for displaying temporal data (xkcd: ISO 8601). We need to know the data types, keys and constraints on the table. Avoid dialect in favor of ANSI/ISO Standard SQL.
You do not know how to model an event, like a service call, with a pair of (start, end) timestamps. A NULL end timestamp would mean the event is still open. Download a free copy of the Snodgrass book on temporal SQL queries from the University of Arizona.
You also do know SQL shorthand. We would use the IN() predicate:
CASE WHEN service_call_status IN ('ACTIVE', 'IN WORK')
THEN ..
ELSE NULL END;
85 to 95% of the real work in SQL is in the DDL.
I will guess that those two service call status codes mean that the service_call_end_timestamp IS NULL to show it is unresolved. Oh, SQL Server does not use ANSI/ISO Standard temporal math; see why this is a bad place to ask your question?
WITH Service_Call_Durations
AS
(SELECT service_ticket,
DATEDIFF (SECONDS, service_call_begin_timestamp,
COALESCE (service_call_end_timestamp,
CURRENT_TIMESTAMP) AS answer_duration)
FROM Foobar) --- we have no name! No DDL!
SELECT AVG(answer_duration) AS answer_duration_avg
FROM Service_Call_Durations;