我想在SAS中联接两个表,并且正在使用PROC SQL
我有 newdb.access_db ,其中有几个公司代码和 newdb.Company_Codes ,具有相应公司代码的名称
我希望以这样一种方式输出:结果表将显示newdb.access_db中的所有列以及对应于每行公司代码的公司名称的新列
以下是我的代码
PROC SQL;
CREATE TABLE newdb.access_db_with_company_name AS
SELECT newdb.access_db.*,newdb.Company_Codes.ENTITY FROM newdb.access_db
LEFT JOIN newdb.Company_Codes
ON newdb.access_db.ENTREPRISE_IDENTIFIER = newdb.Company_Codes.ENTREPRISE_IDENTIFIER;
RUN;
使用此代码,我收到语法错误
ERROR 22-322: Syntax error, expecting one of the following: a quoted string, !, !!, &, *, **,
+, ',', -, /, <, <=, <>, =, >, >=, ?, AND, AS, BETWEEN, CONTAINS, EQ, EQT,
FORMAT, FROM, GE, GET, GT, GTT, IN, INFORMAT, INTO, IS, LABEL, LE, LEN, LENGTH,
LET, LIKE, LT, LTT, NE, NET, NOT, NOTIN, OR, TRANSCODE, ^, ^=, |, ||, ~, ~=.
错误指向
SELECT newdb.access_db.*,newdb.Company_Codes.ENTITY FROM newdb.access_db
- -
22 22
200 76
当我在sas中看到我的编辑器窗口时,表明代码正在运行。然后我按下break
按钮以停止代码。
我没有弄清我写的东西是否正确,即使是错误的代码也将如何执行
答案 0 :(得分:1)
您需要为表加上别名:
PROC SQL;
CREATE TABLE newdb.access_db_with_company_name AS
SELECT a.*b.ENTITY
FROM newdb.access_db as a
LEFT JOIN newdb.Company_Codes as b
ON a.ENTREPRISE_IDENTIFIER = b.ENTREPRISE_IDENTIFIER;
RUN;
答案 1 :(得分:1)
每当查询中有多个表时,都应使用表别名和限定的列名。别名应为表的缩写,以便于查询。
所以,我建议:
PROC SQL;
CREATE TABLE newdb.access_db_with_company_name AS
SELECT a.*, cc.ENTITY
FROM newdb.access_db a LEFT JOIN
newdb.Company_Codes cc
ON a.ENTREPRISE_IDENTIFIER = cc.ENTREPRISE_IDENTIFIER;
RUN;