PROC SQL错误:“错误:使用equals(=)的表达式具有不同数据类型的组件。”

时间:2014-12-09 21:38:15

标签: sql sas proc-sql

我正在尝试使用PROC SQL对我的数据进行分组,当我使用变量TNM_CLIN_STAGE_GROUP时,它会给我一个错误。示例如下:

PROC SQL; 
create table subset as
select ncdb.*
from ncdb
where YEAR_OF_DIAGNOSIS>2002  
AND SEX = 2
AND LATERALITY IN (1,2,3)
AND HISTOLOGY = 8500
AND TNM_CLIN_STAGE_GROUP = 1;
quit;

ERROR: Expression using equals (=) has components that are of different data types.

当我运行相同的代码但取出变量TNM_CLIN_STAGE_GROUP时,代码可以运行。任何人都知道该变量名称的问题是什么?

2 个答案:

答案 0 :(得分:3)

该错误表示类型不同。 SAS只有两种类型,数字和字符,所以变量可能是字符;验证具体的值,但一般来说它可能需要引用(单或双,在这种情况下并不重要)。

如果它不是硬编码值,而是另一个变量的值,您可以使用PUT转换为字符或INPUT转换为数字,根据数据更容易转换

数据步骤中的SAS会很乐意为您转换,但在SQL和类SQL(WHERE语句)中,它不会自动将字符转换为数字,反之亦然;你必须提供正确的类型。

答案 1 :(得分:0)

在做相等之前,请检查您要比较的内容。

检查你的ncbd表的结构,特别是TNM_CLIN_STAGE_GROUP的字段类型

你会看到真正的类型,如果它是一个varchar,你需要使用@JChao建议的单引号作为评论。

如果是另一种类型,那么你需要调整比较器或者如果你没有选择就使用演员。