SAS Proc SQL中的CONVERT语句

时间:2017-02-14 22:14:08

标签: sql sas

我正在运行以下代码,该代码应该为我比较SAS数据集的两列:

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?

2 个答案:

答案 0 :(得分: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;

正如戈登所说,这可能甚至不需要,因为SAS只有数字和字符。如果它存储为字符,则仅使用input;否则将其删除。

答案 1 :(得分:1)

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

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

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