IIF()
не является функцией SQL
.Это может быть функция, которая реализована как расширение в некоторой версии SQL
, скорее всего, созданной Microsoft.
Я тоже не уверен, что такое INLIST()
.Я предполагаю, что это какой-то тип проверки того, находится ли первый аргумент в других аргументах.Если это так, вы можете заменить его одной из функций SAS WHICHN()
или WHICHC()
, в зависимости от того, являются ли значения в переменных числами или строками.
Нормальный синтаксис SQL
для этого типа операцииCASE
SUM( case when ( a.Department= DptGI) then 1
when ( a.Department=DptOncology) then 1
when ( a.Department=DptSurgery ) then 1
else 0 end
) as TotalApts
Если вы просто пытаетесь получить результат 1 или 0 и у вас все в порядке с использованием специального синтаксиса SAS, то вы можете просто суммировать результат логического выражения.
SUM( (a.Department=DptGI) or (a.Department=DptOncology)
or (a.Department=DptSurgery)) as TotalApts
Теперь, если DPTGI
и другие значения являются константами, а не переменными, вы можете использовать оператор IN
.
SUM(a.Department in ('GI','Oncology','Surgery')) as TotalApts