【发布时间】:2018-10-08 14:22:44
【问题描述】:
我正在尝试根据外部表中包含的值创建一个宏变量。我目前正在使用这个:
PROC SQL NOPRINT;
SELECT compress("'" || put(MAX(CALL_DATE)+1 , DATE9.)|| "'")
into :start_date
FROM table.test
;
这为我提供了表中的最大日期为“10OCT2018” 问题是,当我最初运行它时,我的源表将没有最大值,因为它将是空白的,因此它评估为“。” 我想做类似的事情:
PROC SQL NOPRINT;
SELECT IF compress("'" || put(MAX(CALL_DATE)+1 , DATE9.)|| "'") ='.' THEN
'10OCT2018' ELSE compress("'" || put(MAX(CALL_DATE)+1 , DATE9.)|| "'") END
into :start_date
FROM table.test
;
这将允许我在源表为空时填充变量,然后在使用数据更新后使用最大日期。
【问题讨论】:
-
SQL 使用 CASE 语句参见文档。
-
压缩时的情况("'" || put(MAX(CALL_DATE)+1 , DATE9.)|| "'") ='.'然后 '10oct2018' else compress("'" || put(MAX(CALL_DATE)+1 , DATE9.)|| "'") end 虽然它没有错误但不会评估我的想法。
标签: sql if-statement sas sas-macro