我想翻译以下用于SAS的Proc SQL中的代码片段:
SUM( IIF( INLIST( a.Department, DptGI, DptOncology, DptSurgery ), 1, 0 )) as TotalApts,;
但是,PROC SQL不能识别IIF()。
我能实现一个if/else或某种CASE语句吗?
这些对我来说似乎都不管用。
发布于 2019-01-29 07:56:04
IIF()不是SQL函数。它可能是在SQL的某些版本中作为扩展实现的函数,很可能是由微软创建的那些版本。
我也不确定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 TotalAptshttps://stackoverflow.com/questions/54409548
复制相似问题