首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Proc SQL中使用IIF

在Proc SQL中使用IIF
EN

Stack Overflow用户
提问于 2019-01-28 20:09:34
回答 2查看 322关注 0票数 0

我想翻译以下用于SASProc SQL中的代码片段:

SUM( IIF( INLIST( a.Department, DptGI, DptOncology, DptSurgery ), 1, 0 )) as TotalApts,;

但是,PROC SQL不能识别IIF()

我能实现一个if/else或某种CASE语句吗?

这些对我来说似乎都不管用。

EN

回答 2

Stack Overflow用户

发布于 2019-01-28 23:56:04

IIF()不是SQL函数。它可能是在SQL的某些版本中作为扩展实现的函数,很可能是由微软创建的那些版本。

我也不确定INLIST()是什么。我假设这是对第一个参数是否在其他参数中的某种类型的测试。如果是这样,您可以将其替换为SAS函数WHICHN()WHICHC()之一,具体取决于变量中的值是数字还是字符串。

该类型操作的正常SQL语法是CASE

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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特定的语法,那么您可以只对布尔表达式的结果求和。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SUM( (a.Department=DptGI) or (a.Department=DptOncology)
     or (a.Department=DptSurgery)) as TotalApts

现在,如果DPTGI和其他值是常量而不是变量,那么您可以使用IN运算符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SUM(a.Department in ('GI','Oncology','Surgery')) as TotalApts
票数 1
EN

Stack Overflow用户

发布于 2019-01-28 20:19:40

IIF的SAS版本是IFN or IFC,这取决于数字或字符返回值(输入列是什么并不重要,只是您想要返回的列)。只要您在原生SAS PROC SQL (而不是直通式SQL)中使用它,它就应该可以工作。

然而,INLIST也不是一个SAS函数,你也必须把它重写成一个普通的in运算符。

您也应该能够使用case when语句,但是,如果您需要有关这些语句的帮助,可以发布您尝试过的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54409548

复制
相关文章
创建proc中的节点
#include <linux/module.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/proc_fs.h> #include <linux/fs.h> #define CUTBAG_DIR "CU_T-bagwell" #define CUTBAG_NODE "test_node" struct proc_dir_entry *cutbag_dir; static int __init
用户3765803
2019/03/05
2.4K0
SAS Join(Proc sql) PK Merge(Data Step)
select distinct a.*,b.BIRTHDAT from ICF as a
Setup
2019/10/21
1.8K0
SAS  Join(Proc sql)  PK  Merge(Data Step)
辨析 Ruby 中的 Method 与 Proc
Ruby 与 Python、Scala 类似,在一切皆是对象(Seeing Everything as an Object)的基础上,支持函数式编程,这意味着函数是一等成员,可以作为参数传入,也可以作为函数值返回。
飞驰的西瓜
2022/07/26
9370
辨析 Ruby 中的 Method 与 Proc
在Docker中快速使用SQL Server 2022环境
docker hub地址:https://hub.docker.com/_/microsoft-mssql-server
AiDBA宝典
2023/04/27
4.5K0
在Docker中快速使用SQL Server 2022环境
在SQL Server2005中使用 .NET程序集
 昨天完成了一个最简单的在数据库中创建标量值函数,今天主要完成表值函数,存储过程和用户定义类型在和.NET结合下的使用方法.
深蓝studyzy
2022/06/15
1.6K0
Linux 中 /proc 文件系统内容详述
Linux 下的 /proc 文件系统中提供了许多有用的信息,除了基本的CPU使用率、版本号等,你甚至还可以在这里直接看到内核的输出。下面这张表,简单列举 /proc 中文件的含义:
宋天伦
2020/07/15
3.5K0
如何使用内核API函数 proc_create?
看到一个null pointer dereference的demo使用了这个函数。
Laikee
2022/04/25
1.5K0
在SQLMAP中使用动态SQL
最近有几个同事和朋友询问如何在SQLMAP中“拼接字符串”,因为有时候条件的数量不固定,条件参数类型也不固定,无法写出 @参数名 这样的SQL语句,也就是大家常说的“动态SQL”问题。PDF.NET数据开发框架在1.0版本就支持这个功能了,而且在SQLMAP说明里面也写了,但就是没有人看 这里举一个实际的例子说明如何使用动态SQL。 1,设有下面的一个SQLMAP脚本: <Select CommandName="GetRemindsBywhere" CommandType="Text" Method="" 
用户1177503
2018/02/26
9960
proc-tabulate
data boat; infile cards; input name $ 1-12 port $ move $ type $ price 6.2; cards; Silent Lady Maalea Sail sch 75.00 America II Maalea Sail yac 32.95 ALoha Anai Lahaina Sail cat 62.00 Ocean Spirit Maalea Power cat 22.00 Anuenue
用户1733462
2018/06/01
1.4K0
Sql 中的变量使用
我们在学 Python 或者其他编程语言的时候都应该有学过变量这么一个东西,可是 Sql 这种查询语言中怎么也有变量呢?具体有什么用呢?
张俊红
2019/08/28
11.5K1
SQL中EXISTS的使用
相关子查询执行过程:先在外层查询中取“学生表”的第一行记录,用该记录的相关的属性值(在内层WHERE子句中给定的)处理内层查询,若外层的WHERE子句返回“TRUE”值,则这条记录放入结果表中。然后再取下一行记录;重复上述过程直到外层表的记录全部遍历一次为止。
全栈程序员站长
2022/09/07
1.2K0
proc 储过程
SET QUOTED_IDENTIFIER ON  GO SET ANSI_NULLS ON  GO –**分类报表存储过程 ALTER  proc gnfl_proc  as  declare @p_phone varchar(30), @p_sex int, @p_age int, @p_city varchar(50), @p_r_type int, @p_r_time datetime,    @v_ping     int, –PING码上行总计      @v_ping_ejj int, –PING码上行其中EJJ用户数    @v_ping_bjj int, –PING码上行其中BJJ用户数    @v_ping_con int, –PING码上行中注册和未注册的用户(consumer)不含发送EJJ/BJJ用户    @v_ping_reg     int, –发送PING码并注册的用户(含不在同一天注册的用户)    @v_ping_reg_ejj int, –发送PING码并注册且发送过EJJ的用户    @v_ping_reg_bjj int, –发送PING码并注册且发关过BJJ的用户    @v_ping_reg_con int, –发送PING码注册的用户(consumer)不含发送过EJJ/BJJ的用户    @v_ping_noreg     int, –发送PING码未注册的用户    @v_ping_noreg_ejj int, –发送PING码未注册而且发送了EJJ的用户    @v_ping_noreg_bjj int, –发送PING码未注册而且发送了BJJ的用户    @v_ping_noreg_con int, –发送PING码未注册也示发送EJJ/BJJ的用户(consumer)]    @v_man    int, –男性    @v_women  int, –女性    @v_age20  int, –年龄在20岁以下    @v_age29  int, –年龄在20~29岁    @v_age39  int, –年龄在29~39岁    @v_age49  int, –年龄在39~49岁    @v_age50  int, –年龄在49岁以上    @v_citysh int, –上海    @v_citybj int, –北京    @v_cityhz int, –杭州    @v_citygz int, –广州    @v_citysz int, –深圳    @v_cityqt int, –其他城市    @v_ejj_user int, –EJJ用户      1    @v_bjj_user int, –BJJ用户      2    @v_coun int –写入临时表的判断条件 select  –统计男 @v_man=count( case  when usersex=’1′ then 1 else null end ), –统计女 @v_women=count( case  when usersex=’2′ then 1 else null end ),  –统计20岁 @v_age20=count(case       when userAge< 20  then 1     else null     end     ) , –统计29岁 @v_age29=count(case      when userAge< 30 and userAge>19 then 1     else null     end     ), –统计39岁 @v_age39=count(case      when userAge < 40 and userAge>29 then 1     else null     end), –统计49岁 @v_age49=count(case      when userAge < 50 and userAge>39 then 1     else null     end), –统计50岁 @v_age50=count(case      when userAge >49 then 1     else null     end), –统计上海用户 @v_citysh=count(case       when ci
全栈程序员站长
2021/05/06
1.2K0
SQL中的CASE WHEN使用
SQL中的CASE WHEN使用 Case具有两种格式。简单Case函数和Case搜索函数。 –简单Case函数 CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数(WHEN 后还可以用 AND ,OR ) CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘2’ THEN ‘女’ ELSE ‘其他’ END
javascript.shop
2019/09/04
2.3K0
Flink SQL 中TableFunction使用分析
本篇幅介绍Flink Table/SQL中如何自定义一个表函数(TableFunction),介绍其基本用法以及与源码结合分析其调用流程。
Flink实战剖析
2022/04/18
1.5K0
Flink SQL 中TableFunction使用分析
centos proc目录简介
1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
黄啊码
2020/05/29
2.5K0
Sql语句在Mysql中的执行流程
查询缓存: 执行查询语句的时候,会先查询缓存(MySQL 8.0 版本后移除,因为这个功能不太实用)。
Qwe7
2022/02/11
4.7K0
如何使用 xorm 在执行前改写 SQL
有时候你需要再 SQL 执行之前对于 SQL 语句进行改写,有可能是修改表名字段名,有可能只是添加注释,这些看起来奇怪的操作其实有时候是为了帮助在数据库之前的 proxy 来实现某些功能,比如最常见的分库分表,读写分离,多租户等等。
LinkinStar
2023/10/18
4601
在php中使用PDO预防sql注入
在建站中,注入(Injection)一直都是一个值得考虑的安全问题,在OWASP(Open Web Application Security Project) TOP 10 中位列第一。详见OWASP官网https://www.owasp.org/
yumusb
2020/04/22
1.2K0
在php中使用PDO预防sql注入
【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?
利用STA对语句进行优化后,STA会对语句进行分析,采用最优的优化策略,并给出优化后的查询计划。可以按照STA给出的建议重写语句。但是,有些情况下,你可能无法重写语句(比如在生产环境中,SQL语句又在一个包中)。这个时候就可以利用Sql Profile,将优化策略存储在Profile中,Oracle在构建这条语句的查询计划时,就不会使用已有相关统计数据,而使用Profile的策略,生成新的查询计划。
AiDBA宝典
2019/09/29
2.7K0
【DB笔试面试608】在Oracle中,如何使用STA来生成SQL Profile?
executeupdate mysql_使用Mysql中的executeUpdate在SQL语句中创建表
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
全栈程序员站长
2022/11/01
5.5K0

相似问题

Proc SQL中的IIF

35

在proc sql中包含proc排序

13

在proc fcmp中使用proc sql命令?

21

SQL:使用IIF的CTE

12

在SQL update语句中使用IIF

42
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文