SAS proc sql连接和加入就好

时间:2013-01-16 08:32:45

标签: sql sas proc-sql 4gl

我正在尝试在SAS结构中为Financial System Data构建数据模型。我们的想法是将表中的ID作为字符表达式保存,然后从另一个表构建一个带有内部联接的proc sql - 类似的应该从一个char表达式“ID%”开始获取ID。 proc sql应如下所示:

proc sql;
SELECT I.* 
  FORM tableWithIDs X INNER JOIN tableWithData I 
    ON I.ID LIKE X.ID||'%'
;
quit;

Unofortunatley它应该是这样的:......喜欢'X.ID%' 有没有办法在SAS代码中构建这样的表达式? 请帮助!!!

2 个答案:

答案 0 :(得分:4)

如果保存X.ID||'%'的值,您可能会发现它看起来像1 %(对于id = 1)。尝试将compress放在X.ID||'%'左右,以删除多余的空白,如下所示:

LIKE compress(X.ID || '%')

我假设您的ID中没有任何空白字符。

答案 1 :(得分:3)

假设您使用的是版本9的SAS解决方案,则使用CATS函数而不是||级联:

like cats(x.ID,'%')

您还拥有EQT运算符,这意味着基本上是'以'开头'(截断为相等的长度,然后进行比较):

on I.ID eqt x.ID

仅当x.ID始终与I.ID长度相同或长于I.ID时才有效,因为它将截断较长者。如果I.ID是较长的字符串,例如'Member',x.ID是'Mem',则比较将是有效的,LIKE认为它不会有效。