0
SQL新手 - 我想將事實表crselist加入到crseinfo表中以獲取正確的維度信息。我一直在研究一些相關的子查詢,但沒有給出所需的結果(見下文)。 crseinfo表格指出,從1996年開始,Art 508屬於大學09年,應該稱爲OkArt ..它在2002年和2003年更新.Crselist列出了實際教授的課程。如何將事實表加入SAS(緩存更改日期)
data crseinfo ;
input crsenme $ crsenum crsefx crsecollege $ crsedesc $9.;
cards;
ART 508 199610 09 OkArt
ART 508 200220 18 WowItsArt
ART 508 200300 18 SuperArt
;
run;
data crselist;
input crsenme $ crsenum term section $;
cards;
ART 508 199610 01
ART 508 199610 02
ART 508 199610 03
ART 508 199710 01
ART 508 200220 01
ART 508 200220 02
ART 508 201020 01
ART 508 201120 01
;
run;
期望的結果將被:
data desired ;
input crsenme $ crsenum term section $ crsecollege $ crsedesc $9.;
cards;
ART 508 199610 01 09 OkArt
ART 508 199610 02 09 OkArt
ART 508 199610 03 09 OkArt
ART 508 199710 01 09 OkArt
ART 508 200220 01 18 WowItsArt
ART 508 200220 02 18 WowItsArt
ART 508 201020 01 18 SuperArt
ART 508 201120 01 18 SuperArt
;
談到SAS幫助頁面(http://web.utk.edu/sas/OnlineTutor/1.2/en/60477/m70/m70_52.htm)它似乎像我可以這樣做:
proc sql ;
select *
from crseinfo a, crselist b
where a.crsenme eq b.crsenme and
a.crsenum eq b.crsenum and
b.term eq (select min(c.term)
from crselist c
where c.term ge a.crsefx)
;
quit;
但這不行。我對基於SQL的解決方案感興趣 - 感謝您的寶貴時間。
謝謝,這與我一直盯着的相關子查詢完全不同。我仍然相信可以使用更正。子。我會弄清楚這一點,但無論如何這可讀性更強。 – 2014-09-13 21:33:40