Оператор CASE не может возвращать более одного значения, это функция, работающая с одним значением.
Это не требуется для вашего заявления, это утверждение должно работать:
select count(*)
from tablename a
where asofdate='10-nov-2009'
and a.FILENAME in (select distinct filename
from tablename
where asofdate='10-nov-2009'
and isin is null);
Может быть, вы имеете в виду другой сценарий использования? Что-то вроде этого:
Выбрать *
Из таблицы
Где в случае
Когда тогда
Когда тогда
ELSE END
Тогда использование CASE может оказаться неправильным сценарием. Может быть, это поможет вам в правильном направлении:
Select *
From aTable
Where <Case1> and column1 in <Subselect1>
Or <Case2> and column1 in <Subselect2>
OR Not (<Case1> Or <Case2>) and column1 in <Subselect3>
Но, вероятно, это будет довольно трудоемко для оптимизатора ...