
[英]How to use proc sql in sas and the in statement from another table
[英]Trying to update table values from another table in SAS w/ Proc Sql
我有一個創建的表 (EM_UPLOAD),我想更新另一個表 (QUESTVAR_CASEITEM) 中的值。 QUESTVAR 表中的值是 null,我將它們設為不是 null。 我正在嘗試使用以下代碼執行此操作:
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
嘗試從目標變量名稱中刪除別名。 您只能更新單個數據集中的變量,因此可能會造成混淆。
... SET DEBIT_ENTRYMODE= ...
除非 EM_UPLOAD 只有一個觀察結果,否則您可能想要修改 UPDATE 語句的 WHERE 子句。
WHERE SEQCASEITEM IN (SELECT CASEITEM FROM EM_UPLOAD);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.