【正文】
level usa 0 c01 . 1 c02 1 u00 2 c03 2 u02 2 c03 2 u01 3 c04 3 u03 . 4 u04 結(jié)果顯示,兩個(gè)表中所有不匹配的行都出現(xiàn)在完全連接的輸出結(jié)果中。 MERGE語(yǔ)句和 JOIN連接比較 所有行匹配無(wú)重復(fù)值情況 兩個(gè)表中的 by變量的值都相等且沒(méi)有重復(fù)值的時(shí)候,可以使用一個(gè)內(nèi)部連連接來(lái)產(chǎn)生同樣的效果。 例 BY變量值相等且沒(méi)有重復(fù)值。 Table a Table b code manager code Assitant 145 Max 145 Tracy 150 Jack 150 Yao 155 Paul 155 Chen 程序如下 : data merge1。 merge a b。 by code。 run。 proc print data=merge1 noobs。 title 39。Table MERGE139。 run。 Table MERGE1 code manager Assitant 145 Max Tracy 150 Jack Yao 155 Paul Chen Merge在合并前的兩個(gè)數(shù)據(jù)集已經(jīng)按 code排過(guò)序,而 PROC SQL則不需要排序,下面程序給出和上面同樣的結(jié)果。 proc sql。 title 39。Table MERGE139。 select , , from a, b where =。 quit。 有重復(fù)值情況 當(dāng)用來(lái)連接兩個(gè)表的列變量或者 BY組中有重復(fù)值時(shí), Merge和 Proc sql的處理方式有所區(qū)別。 例 BY組中有重復(fù)值。 Table newone Table newtwo code Manager code Assistant 145 Max 145 Jerry 145 Xam 145 Tracy 155 Paul 155 Chen Data步 data merge3。 merge a b。 by code。 run。 proc print data=merge3 noobs。 title 39。Table MERGE339。 run。 Table Merge3 code Manager Assitant 145 Max Jerry 145 Xam Tracy 155 Paul Chen 若用 SQL,則會(huì)出現(xiàn)下面的結(jié)果: Proc sql。 Title 39。Table Merge339。 Select , , From a full join b On =。 quit。 Table Merge3 code manager assistant 145 Max Jerry 145 Max Tracy 145 Xam Jerry 145 Xam Tracy 155 Paul Chen 使用子查詢語(yǔ)句選擇數(shù)據(jù) 語(yǔ)言格式: (select columnnamex..fromtabley..(where/having).)。 產(chǎn)生單個(gè)值的子查詢 例 考慮例 。 Proc sql。 Title 39。Which Manager has the same code as Assistant Chen39。 Select * From a Where code eq (select code from b where assistant=39。Chen39。)。 Quit; Which Manager has the same code as Assistant Chen code manager 155 Paul 產(chǎn)生多個(gè)值的子查詢 例 根據(jù)表 sampstk中給定股票的股票代碼,從表 lstkinfo中選出相應(yīng)的股票信息。 Proc sql。 select stkcd,lstknm,lstdt from where stkcd in (select stkcd from )。 quit。 最新股票名稱 | 股票代碼 |Sto Latest Stock 股票上市日 |L ck Code Name ist Date 000002 萬(wàn)科 A 19910129 000007 深達(dá)聲 A 19920413 000011 S深物業(yè) A 19920330 混合子查詢 例 選出表 A股 2020年的年收益率。 proc sql。 select stkcd, yrret from a where (select stktype from b where =)=39。A39。 and 39。1jan202039。d=date=39。31dec202039。d。 quit。 股票代碼 |Stock Code 年收益率 |Yearly Return 000002 000007 000011 000016 600601 600604 600651 600653 合并兩個(gè)或多個(gè)查詢結(jié)果 以下的 SET算符例子都基于下面兩個(gè)表。 Table A x y 1 one 2 two 2 two 3 Three 與 JOIN的橫向連接不同, SET連接是豎直的連接。 Table B x z 1 one 2 two 4 four 由多個(gè)查詢產(chǎn)生非重復(fù)觀測(cè) (UNION算符 ) proc sql。 title 39。A UNION B39。 select * from A union