作者imaltar (..)
站内Statistics
标题Re: [程式] 有关SAS的SQL合并的问题
时间Sun Jan 1 23:53:40 2012
※ 引述《lphotoimpact (枫雪)》之铭言:
: 各位大大好
: 想请问SAS
: /-----资料范例HOSP.HOSP3A----/
: ID IND_ICD_NKEEP 其他变项
: 1 0
: 2 0
: 3 0
: 4 0
: 5 0
: /-----资料范例HOSP.HOSP3D----/
: ID IND_ICD_NKEEP 其他变项
: 2 1
: 3 1
: 我原本用MERGE合并
: DATA HOSP.HOSP3E;
: MERGE HOSP.HOSP3A(IN=MAIN) HOSP.HOSP3D;
: BY ID;
: IF MAIN;
: IF IND_ICD_NKEEP=1 THEN DELETE;
: DROP IND_ICD_NKEEP;
: RUN;
: /----期望跑出的资料HOSP.HOSP3E------/
: ID IND_ICD_NKEEP 其他变项
: 1 0
: 4 0
: 5 0
: ----------------------------------------------------
: 现在改用SQL
: PROC SQL;
: CREATE TABLE HOSP.HOSP3E AS
: SELECT *
: FROM HOSP.HOSP3A LEFT JOIN HOSP.HOSP3D ON HOSP3A.ID=HOSP3D.ID;
: QUIT;
: 但是我不清楚
: IF IND_ICD_NKEEP=1 THEN DELETE;
: DROP IND_ICD_NKEEP;
: 该怎麽下
: 只知道多写下列语法,结果是错的
: DATA HOSP.HOSP3E; SET HOSP.HOSP3E;
: IF IND_ICD_NKEEP=1 THEN DELETE;
: DROP IND_ICD_NKEEP;
: RUN;
: 因为IND_ICD_NKEEP=1都在HOSP.HOSP3D
: 但是都没有合并到HOSP.HOSP3E
: 不知道我SQL写错在哪?
改成
PROC SQL;
CREATE TABLE HOSP.HOSP3E AS
SELECT A.*
FROM HOSP.HOSP3A A LEFT JOIN HOSP.HOSP3D B
ON A.ID=B.ID
WHERE B.IND_ICD_NKEEP NE 1;
QUIT;
A.*就是最後的DATA(HOSP.HOSP3E)是保留HOSP.HOSP3A所有栏位,而不会有B(HOSP.HOSP3D)的
如果只要ID就打A.ID就好了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.168.231.84
1F:推 lphotoimpact:成功了~谢谢大大~原来select要这样下 01/02 00:24
2F:→ lphotoimpact:还以为LEFT JOIN就是指定左方资料是主档了 01/02 00:25