我试图根据数据集中一列字符串创建一组标志。该字符串有成千上万的唯一值,但我想创建只有一个小子集(比如10)的标志。我想使用SAS宏变量来做到这一点。我尝试了许多不同的方法,其中没有一个能够奏效。这里是一个似乎最简单和最合乎逻辑的我的代码,但它仍然没有工作:使用SAS宏变量在PROC中创建变量名称SQL
%let Px1='12345';
PROC SQL;
CREATE TABLE CLAIM1 AS
SELECT
b.MEMBERID
, b.ENROL_MN
, CASE WHEN (a.PROCEDURE = &Px1.) THEN 1 ELSE 0 END AS CPT_+&Px1.
, a.DX1
, a.DX2
, a.DX3
, a.DX4
FROM ENROLLMENT as b
left join CLAIMS as a
on a.MEMBERID = b.MEMBERID;
QUIT;
显然,在这个代码只有一个标志,但一旦我弄明白的想法是,我会增加额外的宏变量和标志。以下是错误消息我得到:
8048 , CASE WHEN (PROCEDURE= &Px1.) THEN 1 ELSE 0 END AS CPT_+&Px1.
-
78
ERROR 78-322: Expecting a ','.
看来,问题的原因与字符串CPT_与宏变量组合。正如我所提到的,我尝试了几种方法来解决这个问题,但都没有成功。
在此先感谢您的帮助。
这是TSQL不是SAS的实现,所以这个不相关的。 SAS完全不同。 – Joe