繁体   English   中英

尝试从带有 Proc Sql 的 SAS 中的另一个表更新表值

Trying to update table values from another table in SAS w/ Proc Sql

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我创建了一个表 (EM_UPLOAD),我想更新另一个表 (QUESTVAR_CASEITEM) 中的值。 QUESTVAR 表中的值为空,我将它们设置为非空。 我正在尝试使用以下代码执行此操作:

    PROC SQL;
    UPDATE CD1PROD.QUESTVAR_CASEITEM a
    SET a.DEBIT_ENTRYMODE=(SELECT EM
      FROM EM_UPLOAD b
      WHERE A.SEQCASEITEM = B.CASEITEM)
      WHERE SEQCASEITEM IN (SELECT CASEITEM FROM EM_UPLOAD);
    QUIT;

它一直在 SET 行上出错,说它在等待一个 = 当一个 = 已经存在时......

日志转储如下:

1          ;*';*";*/;quit;run;
2          OPTIONS PAGENO=MIN;
3          %LET _CLIENTTASKLABEL='EM_UPDATE_TESTING';
4          %LET _CLIENTPROCESSFLOWNAME='Process Flow';
5          %LET _CLIENTPROJECTPATH='';
6          %LET _CLIENTPROJECTPATHHOST='';
7          %LET _CLIENTPROJECTNAME='';
8          %LET _SASPROGRAMFILE='[REDACTED]';
9          %LET _SASPROGRAMFILEHOST='W7LT110183466';
10         
11         ODS _ALL_ CLOSE;
12         OPTIONS DEV=PNG;
13         GOPTIONS XPIXELS=0 YPIXELS=0;
14         FILENAME EGSR TEMP;
15         ODS tagsets.sasreport13(ID=EGSR) FILE=EGSR
16             STYLE=HTMLBlue
17             STYLESHEET=(URL="file:///C:/Program%20Files%20(x86)/SAS94/x86/SASEnterpriseGuide/7.1/Styles/HTMLBlue.css")
18             NOGTITLE
19             NOGFOOTNOTE
20             GPATH=&sasworklocation
21             ENCODING=UTF8
22             options(rolap="on")
23         ;
NOTE: Writing TAGSETS.SASREPORT13(EGSR) Body file: EGSR
24         
25         GOPTIONS ACCESSIBLE;
26         LIBNAME CD1PROD SQLSVR USER='XXXXXXXXXXXXXX' PASSWORD=XXXXXXXXXX DSN=STGRAMIHQSQLF18adjhub SCHEMA=DBO QUALIFIER=AdjHub;
NOTE: Libref CD1PROD was successfully assigned as follows: 
      Engine:        SQLSVR 
      Physical Name: STGRAMIHQSQLF18adjhub
27         /*Update EM field in LEAN*/


28         PROC SQL;
29         UPDATE CD1PROD.QUESTVAR_CASEITEM as a
30         SET A.DEBIT_ENTRYMODE = (SELECT EM
                _
                73
                76
ERROR 73-322: Expecting an =.

ERROR 76-322: Syntax error, statement will be ignored.

31          FROM EM_UPLOAD  as b
32          WHERE a.SEQCASEITEM = b.caseitem)
33         WHERE SEQCASEITEM IN (SELECT caseitem FROM EM_UPLOAD);
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements.
34         QUIT;
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
      
35         
36         GOPTIONS NOACCESSIBLE;
37         %LET _CLIENTTASKLABEL=;
38         %LET _CLIENTPROCESSFLOWNAME=;
39         %LET _CLIENTPROJECTPATH=;
2                                                          The SAS System                             15:33 Monday, January 25, 2021

40         %LET _CLIENTPROJECTPATHHOST=;
41         %LET _CLIENTPROJECTNAME=;
42         %LET _SASPROGRAMFILE=;
43         %LET _SASPROGRAMFILEHOST=;
44         
45         ;*';*";*/;quit;run;
46         ODS _ALL_ CLOSE;
47         
48         
49         QUIT; RUN;
50         
1 个回复

尝试从目标变量名称中删除别名。 您只能更新单个数据集中的变量,因此可能会令人困惑。

... SET DEBIT_ENTRYMODE= ...

除非 EM_UPLOAD 只有一个观察结果,否则您可能想要修改 UPDATE 语句的 WHERE 子句。

WHERE SEQCASEITEM IN (SELECT CASEITEM FROM EM_UPLOAD);
1 如何在sas中使用proc sql,在另一个表中使用in语句

我想做类似上面的事情。 当变量secid具有出现在名为“secids”的表中的值时,创建一个获取数据的表。 由于我想要的值大约是600,我不能用于(100,101等)。 我需要以某种方式从另一个表中提取这些值。 任何帮助都会非常感激,因为我不是SAS的专家。 ...

2015-11-04 18:30:21 2 40   sql/ sas
2 SAS-在宏中更新表的proc sql

我有一个代码尝试使用子查询中的宏变量来更新宏块中的表。 我面临的挑战是有时某些宏变量为null,从而使代码失败。 当宏变量产生空值时,如何将其设置为忽略? 谢谢 ...

2015-04-01 15:55:50 2 342   sas
4 使用另一个表中的值更新SQL表

预期产量 因此,Feature表中的ExtractedId与ExtractedFeature中的数字相同。 但是我希望功能表中的ExtractedId是Extractedfeature表中的ID。 我该如何执行UPDATE查询? ...

6 从SAS中的另一个表更新Oracle表

我从SAS插入的Oracle中有一个1000万行表。 每周,该表都会在SAS中更新,其中包含一些新行,并且会根据某些条件(例如日期,位置等)对某些行进行一些更改。我知道如何从SAS将表追加到oracle中。 这是我当前正在使用的代码。 在执行此操作之前,我首先必须确定SAS表中添加的 ...

7 SAS数据步/ proc sql使用自动增量主键从另一个表插入行

我有2个数据集,如下所示 另一个数据集 如何将第2个表中的所有行插入第1个表? 情况是第一个表是永久性的。 第二个表每月更新一次,所以我想将每月更新表中的所有行添加到永久表中,以便它看起来像这样 我面临的问题是我无法从数据集1中增加id。就我搜索而言,SAS中的数据集 ...

8 在SAS中使用PROC SQL从长到宽转置表

我正在审查仿生命的艺术:ODS输出数据集,看起来像在http://www.mwsug.org/proceedings/2013/BB/MWSUG-2013-BB12.pdf上列出输出一样,其中作者强迫从PROC输出的数据集类似于他们的表格描述性输出。 作者的代码是: 我想知道是否有使用 ...

9 SAS Proc SQL Loop (?) 从多个库中存在的表中提取

我正在尝试编写从单个数据集 (DSET) 的 3 个“版本”中提取的 SQL,该数据集存在于多个库(LIB16、LIB17、LIB18)中,其中唯一的变量是库名称中的 YY。 我目前的代码是这样的...... 而不是上述,这可能通过某种循环吗? 几个小贴士:请不要数据步骤(不要问,这很复杂) ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM