SAS-在源表中循环并插入到目标表中

SAS-在源表中循环并插入到目标表中,sas,Sas,我想知道是否有人能帮我解决sas问题 我必须检查现有源表中的10000行,并将源表值插入多个目标表中。我必须从源表一次插入一行,还要确保将主键从父表(插入期间)插入子表(插入期间) 我正在使用SAS API(SAS EG) 以下是源表的外观(请注意,这是另一个表,不是数据过程),该表的名称为countrycodelist,其具有以下列,例如: Txn_id statuscode Typecode classcode identifier 001 2

我想知道是否有人能帮我解决sas问题

我必须检查现有源表中的10000行,并将源表值插入多个目标表中。我必须从源表一次插入一行,还要确保将主键从父表(插入期间)插入子表(插入期间)

我正在使用SAS API(SAS EG)

以下是源表的外观(请注意,这是另一个表,不是数据过程),该表的名称为countrycodelist,其具有以下列,例如:

Txn_id statuscode Typecode classcode identifier 001 2 cnt p1 13485 002 2 na n1 13444 003 4 cnt n1 12888 退出

上述代码运行后,状态代码被插入到表sim.tableA中,但该表的键(pk)为自动递增。我需要使用此键插入子表,以便从父表到下面的子表建立正确的连接

PROC SQL;
Insert into tableB (tableAID,TypeCode,ClassCode,DisplayID,)
Select 1101,TypeCode,ClassCode,Identifier
From CountryCodelist;
QUIT;
我手动插入了表A(1101)中的最后一个主键,这适用于小表插入,但在大规模插入中,我需要从表A中获取最后一个主键并插入到表B中。SQL有一些函数,例如scope_identity()或使用@identity来获取最后一个插入的密钥,但这些函数在SAS中不起作用,或者可能我用了错误的方法


我还需要从源表(CountryCodelist)中一次处理一行这些插入。这个countrycodelist表可以随着时间的推移进行更新,并且可以超过10k记录

好的,我来试试。以下流程是否符合您的要求?如果有,我们可以将其转换为代码:

  • 确定表A中的最大键
  • 将CountryCodeList中的一条记录插入表A
  • 将talbeAID值指定给maxKey+1的记录
  • 将该记录(其中maxKey+1现在是tableAID)插入表B
  • 转到1

  • 还是不太明白。例如,为什么一次只录制一条记录?如果表A和表B总是有相同数量的记录,那么这应该容易得多。但是这样的过程对你想要的东西有意义吗?

    你没有提供足够的细节来回答这个问题,我真的不这么认为。您是如何识别目标表的?它们是否取决于数据,还是每次都插入到所有目标表中,还是其他什么?你为什么说你需要一个接一个地插入?这是什么样的桌子?这真的只是一个复制品吗?你说得对,乔,我把这两个合并了,把旧的删除了。对不起,我还是不明白。如果源数据中只有3条记录,可能会显示一个示例,说明代码的外观。编辑改进了它。但仍然没有得到全面的了解。在表A中运行insert时,它将插入3条记录。如果TableA已经有1100条记录,那么新的记录将是11011103条。现在你想把这3条记录插入表B,对吗?在插入之前,表B中是否也有1100条记录?您是否希望表B中的这些记录也是pk=11011011103?或者你想把所有三条记录都插入到表B中,pk=1101。是的,你知道了,我对编码世界还很陌生,所以如果你认为同时转储所有10k记录可以通过从表a中提取正确的id并将其关联到表B而不出现任何混乱,那就太好了。表A和表B总是有相同的记录,因为它们从一个源表中获取主要信息,并将源信息分成两个目标表。嘿,我给了你的帖子一个绿色检查,因为这是我希望学习的方法。
    PROC SQL;
    Insert into tableB (tableAID,TypeCode,ClassCode,DisplayID,)
    Select 1101,TypeCode,ClassCode,Identifier
    From CountryCodelist;
    QUIT;