【发布时间】:2017-03-14 16:30:32
【问题描述】:
我实际上是在尝试加入两个变量,ID 和 ACCOUNTNUMBER。简单。但是,FULL 数据集有一行常见的ID,但不同的ACCOUNTNUMBER(注意重命名)和CAR。我想将这些合并并让ID 保留这些值。请参阅下面的示例数据:
DATA FULL;
LENGTH ID ACCT_FULL CAR $12.;
INPUT ID $ ACCT_FULL $ CAR $;
DATALINES;
A 123 MAZDA
B 456 FORD
C 789 CHEVY
D 777 NISSAN
;
RUN;
DATA SUBSET;
LENGTH ID ACCOUNTNUMBER $12.;
INPUT ID $ ACCOUNTNUMBER $;
DATALINES;
A 123
B 456
C 789
D 012
;
RUN;
** THIS QUERY DOES NOT QUITE OUTPUT A DATASET I WANT **;
PROC SQL NOPRINT;
CREATE TABLE WANT_BAD AS
SELECT *
FROM SUBSET AS A
LEFT JOIN
FULL(RENAME=(ACCT_FULL=ACCOUNTNUMBER)) AS B
ON A.ID = B.ID AND
A.ACCOUNTNUMBER = B.ACCOUNTNUMBER;
QUIT;
以下是我目前拥有的与我想要的并排比较:
Bad Output: Want Output:
A 123 MAZDA | A 123 MAZDA
B 456 FORD | B 456 FORD
C 789 CHEVY | C 789 CHEVY
D 012 | D 012 NISSAN
| D 777 NISSAN
我的问题是——我可以在查询中添加某种UNION 语句来输出我想要的数据吗?我想在 SQL 而不是数据步骤中执行此操作,因为我在现实生活中的FULL 数据量很大,我不想使用IN= 语句读取、排序和合并,因为它需要更长的时间。
【问题讨论】: