sas - 在 Proc SQL 中使用 IIF
问题描述
我想翻译以下代码片段以用于Proc SQL
for SAS
:
SUM( IIF( INLIST( a.Department, DptGI, DptOncology, DptSurgery ), 1, 0 )) as TotalApts,;
但是IIF()
不被PROC SQL
.
我可以执行一个if/else
或某种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
推荐阅读
- wpf - WPF Material Design ListView 问题
- docker - openshift上的jhipster:无法访问jarfile
- angular - Angular6 不通过 API 调用预填充数据
- python - pandas to_csv ,唯一记录数减少
- java - Drools 可以在没有任何关联 POJO 类的情况下拥有 Drl 文件吗?
- javascript - 为什么数组可以在记录后_排序?
- c# - RetryWhen 和异常逻辑
- c# - 如何在 Visiblity.Collapsed 上运行 UWP FrameworkElement SizeChanged 方法?
- sirishortcuts - 将 ISO 8601 日期+时间字符串转换为日期
- html - Safari 上的动画播放状态不正确