错误:使用IN具有不同数据类型的组件



我正在使用SAS Enterprise指南中的以下查询来找到不同日期的不同offer_ids客户的计数:

PROC SQL;               
CREATE TABLE test1 as
select offer_id,
       (Count(DISTINCT (case when date between '2016-11-13' and '2016-12-27' then customer_id else 0 end))) as CUSTID
from test
group by offer_id
;QUIT;

错误:使用具有不同数据类型的组件的表达式注意:在这里,uperv_id是字符变量,而custome_id是数字变量。

很可能是由于将数字变量DATE与字符字符串'2016-11-13'进行比较而引起的。如果要在SAS中指定日期,则必须指定按日期信息识别的样式的日期,并在关闭报价后附加字母D

date BETWEEN '13NOV2016'd AND '27DEC2016'd

请注意,在已发布的代码中没有提及任何外部数据库。但是,即使您的源表是tdlib.tdtable而不是work.test,您在编写SAS代码时仍然需要使用SAS语法。让Teradata引擎弄清楚如何为您转换。

您不清楚它是在SAS还是Teradata上运行的(通过通过)。
我猜SAS,在这种情况下,您在日期之后缺少d(例如'2016-11-13'd)。没有这个,日期被视为文本而不是格式化的数字。
错误语句略有误导,因为SAS将between语句视为in语句。

相关内容

最新更新