首页 > 解决方案 > 计算值开头的 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。

标签: sas

解决方案


您可以使用 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')
   ;

推荐阅读