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
你有什么,你想要什么作为输出。如果你能解释这一点,有人可以很容易地帮助你