作者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
推 lphotoimpact:成功了~謝謝大大~原來select要這樣下 01/02 00:24
→ lphotoimpact:還以為LEFT JOIN就是指定左方資料是主檔了 01/02 00:25