postgresql 从Sas到Postgres的迁移

64jmpszr  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(194)

我需要把sas代码转换成PostgreSQL。但是我看不懂这段代码。请帮我把下面的代码转换成SQL代码。

data fc_action_v1;      

     set action_targets; 

          Region_mod = upcase(region); 

          rename '2nd_Item_nr'n = Prodnumber;  

run;

上面的sas代码是否等同于下面的sql代码?

create table data fc_action_v1 as
select 
     region_mod as region,
     2nd_item_nr as prodnumber
from action_targets

或以上SAS代码表示这一点?创建表数据fc_action_v1作为选择 *,region_mod作为区域,2nd_item_nr作为action_targets中的产品编号
还是别的什么?请帮我把上面的sas代码翻译成PostgreSQL SQL

zf9nrax1

zf9nrax11#

在SQL中,你需要输入所有你想复制的变量。(继续使用SAS代码的一个原因)。
您的SQL没有生成名为REGION_MOD的NEW变量,也没有将其设置为REGION中的大写版本。
我怀疑POSTGRESQL会像SAS一样遇到以数字开头的变量名问题,所以使用POSTGRESQL支持的任何语法来引用非标准变量名。ANSI标准应该支持使用带引号的变量名。(但是要注意你在变量名中使用的大小写,因为PostgreSQL对变量名的大小写有奇怪的规则)。
所以更像是:

create table fc_action_v1 as
select var1
     , region
     , var2 
     , "2nd_item_nr" as prodnumber
     , var3
     , upper(region) as region_mod
from action_targets

其中var1、var2和var3只是为了说明您需要列出所有变量(按照您希望它们在数据集中出现的顺序)。SAS数据步骤将添加新变量REGION_MOD作为数据集中的最后一个变量。

相关问题