Sas 在Proc-SQL中使用IIF

Sas 在Proc-SQL中使用IIF,sas,Sas,我想翻译以下代码片段,以便在Proc SQL中使用SAS: SUM(IIF(包括a.科室、DptGI、DptOncology、DptSurgery)1,0)作为总APT 但是PROC SQL无法识别IIF() 我可以实现一个if/else或某种CASE语句吗 这些似乎都不适合我 IIF的SAS版本取决于数字或字符返回值(不管输入列是什么,只要您想要返回什么)。只要您在本机SAS PROC SQL(而不是通过SQL)中使用它,这应该可以工作 但是,INLIST也不是SAS函数,您还必须将其重写为正

我想翻译以下代码片段,以便在
Proc SQL
中使用
SAS

SUM(IIF(包括a.科室、DptGI、DptOncology、DptSurgery)1,0)作为总APT

但是
PROC SQL
无法识别
IIF()

我可以实现一个
if/else
或某种
CASE
语句吗


这些似乎都不适合我

IIF的SAS版本取决于数字或字符返回值(不管输入列是什么,只要您想要返回什么)。只要您在本机SAS PROC SQL(而不是通过SQL)中使用它,这应该可以工作

但是,
INLIST
也不是SAS函数,您还必须将其重写为正常的
in
运算符

您应该能够在使用
case when
语句时使用
case,但是,如果您想获得帮助,可以发布您尝试过的代码。

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

你有什么,你想要什么作为输出。如果你能解释这一点,有人可以很容易地帮助你