2017-02-14 248 views
0

我运行下面的代码,这是应该来比较SAS数据集的两列对我来说:CONVERT语句SAS PROC SQL

PROC SQL; 

CREATE TABLE loandata.tv_curve AS 
SELECT DISTINCT CONVERT(INT, srp_contract_lifetime) as srp_contract_lifetime, rpa_tv 
FROM loandata.sas_f_risk_parameter_cn 
WHERE rpa_tv IS NOT NULL 
ORDER BY CONVERT(INT, srp_contract_lifetime); 

QUIT; 

然而,当我运行此代码我碰到下面的错误消息:

ERROR: Function CONVERT could not be located. 
ERROR: Function CONVERT could not be located. 
ERROR: The following columns were not found in the contributing tables: INT. 

如何将srp_contract_lifetime变量正确转换为int?

回答

1

CONVERT是TSQL(Microsoft SQL Server)函数,而不是函数。在SAS中,您使用inputput进行转换。

PROC SQL; 

CREATE TABLE loandata.tv_curve AS 
SELECT DISTINCT input(srp_contract_lifetime,12.) as srp_contract_lifetime, rpa_tv 
FROM loandata.sas_f_risk_parameter_cn 
WHERE rpa_tv IS NOT NULL 
ORDER BY input(srp_contract_lifetime,12.); 

QUIT; 

正如Gordon指出,这可能甚至不需要,因为SAS只有数字和字符。如果存储为字符,则只能使用input;否则删除它。

1

SAS只有数字(浮点)和固定长度的字符串。

如果你的变量是一个数字,它只有整数值,那么没有什么可以转换的。如果要删除小数部分,则可以使用INT(),FLOOR(),CIEL()或ROUND()函数,具体取决于您希望如何进行转换。

如果你的变量是一个字符串,那么你可以使用INPUT()或INPUTN()函数。