我正在将SAS脚本转换为Python,其中SAS脚本与Oracle数据库连接,Python将与PostgreSQL数据库连接。在SAS代码中,我发现了这个陈述:
proc sql noprint;
create table table_name as
select distinct wtn
from another_table
where account = .
;
" where account =。"在Oracle中意味着什么或者它不是Oracle SQL的东西,而是SAS的东西?或者它是否适用于所有形式的SQL?
此外,如果它是SAS和/或Oracle特定的,我将在PostgreSQL中使用什么?
答案 0 :(得分:5)
在SAS中,数字变量(包括日期变量)的缺失值显示为句点。在对数字字段进行排序时,SAS将数字空值视为等于“最低可能数”(基本上为负无穷大)。
SAS数据集将使用句点作为缺失数据的值。当您使用proc导出将数据导出为CSV时,我相信它将创建一个空值。要真正回答您的问题,您需要知道从sasdata设置到当前数据库的ETL是如何完成的。
我希望您的数据已针对您的数据库进行了规范化。因此,我认为你应该使用" IS NULL"取代" varname ='。' " 。见下文:
create table table_name as
select distinct wtn
from another_table
where account is NULL
;
此外,字符变量的SAS缺失值显示为空白。对于字符,缺少值设置如下:if name =" none"然后名字=' '