sas - 计算值开头的 Proc SQL
问题描述
我正在写一个proc sql
语句,我想将某些值以字符开头'3'
或'1'
映射到字符的条目作为子集(我正在连接多个数据集,其中一些具有数字编码,其中一些使用字符编码。 ) 数据是从sas7bdat
通过libname
语句引用的文件中加载的。
我想我知道如何在 SQL where 字符串中分别执行这些操作,但我不知道如何将它们一起执行:
where VALUE like '3%'
where VALUE in ('3', '1')
where VALUE in (3, 1)
但是我不确定如何使它映射到字符 dtype,然后检查以'3'
or开头的两个框'1'
。我相信有一些方法可以计算调用中的值,但我不知道如何转换为字符。
whereVALUE
是一个字符串,它有两个字符长。如果它是整数,则该数字永远不会超过两位数,值范围从 1 到 99。
解决方案
您可以使用 PUT() 或 PUTN() 函数将数字转换为字符串。您可以在格式上使用 -L 修饰符,或者仅使用 LEFT() 或 STRIP() 函数从结果中删除前导空格。
create table want as
select * from (
select put(num_id,10.-L) as id
, ....
from ds1
union
select char_id as id
, ...
from ds2
)
where char(id,1) in ('1','3')
;
推荐阅读
- r - 使用 tidyverse 从 s3 存储桶中读取数据
- python - AttributeError:'str'对象没有属性'text',但如果我不放.text,它就可以工作
- python - 如何使用 NumPy 广播来加速这种相关性计算?
- magento - 在 Magento 2 中的所有 URL 中添加斜杠
- java - 使用 OKHttp 发出 GET 请求时出现“无法执行 android:onClick 的方法”异常
- python - 逻辑错误 - 检查一个词是否可以由另一个词组成
- asp.net-core-mvc - 如何验证对 Piranha.WebApi 的调用?
- azure - 是否可以将公共 Github 存储库(或其中的几个文件)合并到我的 Azure Devops repro 和 Pipelines 中?
- c# - 编译器无法将 C# 类成员识别为列表
- css - 是否可以在 Angular 中使用 :host 和 Encapsulation.None 来设置样式?