-1

我目前正在将我的软件包从 SAS Base 重组为 SAS Enterprise Guide,以便将知识转移给客户。不幸的是,我必须牺牲的一个方面是在我的 proc sql 左连接中从使用压缩到剥离的变化,例如以下代码不起作用

   data have;
   input ID VarA;
   datalines;

   1 2
   2 3
   3 4
   4 5
   ;
   run;

   data have1;
   input ID Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9;
   datalines;
   1 3 4 6 7 3 6 6 7 8
   2 2 2 2 2 5 6 7 2 1
   3 5 6 7 8 4 5 3 4 3
   4 3 4 6 7 4 6 8 3 6
   ;
   run;


   proc sql;
    create table Want as
    select a.*
      ,b.Var1
      ,b.Var2
      ,b.Var3
      ,b.Var4
      ,b.Var5
      ,b.Var6
      ,b.Var7
      ,b.Var8
      ,b.Var9
    from Have as a
    left join Have1 as b
    on compress(a.ID) = compress(b.ID);
   quit;

我有时可以使用 strip 功能,但使用 compress 交付包裹更安全,因为观察中经常有错位的空格。有任何想法吗?

编辑:为了避免进一步的混乱,我通常使用 compress 函数来查找 EURIBOR 006m 等债券的参考利率 - 这使我的通用示例不正确,但左连接通常使用字符变量

4

2 回答 2

0

您需要一个字符变量才能使用 compress 函数。您的 ID 变量是数字。

于 2018-05-30T08:15:21.313 回答
0

尝试转换为字符:

on compress(put(a.ID,8.)) = compress(put(b.ID,8.));
于 2018-05-30T09:01:41.913 回答