powielać funkcji SQL ROW_NUMBER
okienkowanie, trzeba sortować dane określone przez zarówno klauzul PARTITION
i ORDER BY
. W kolejnym kroku danych SET
posortowany zestaw danych za pomocą zmiennej (zmiennych) partycji i użycie automatycznej zmiennej zmiennej FIRST.
przydziela nową zmienną liczby wierszy.
Oto rozwiązanie dla podanego przykładu:
proc sort data=companyData;
by region name;
run;
data want;
set companyData;
by region;
if first.region then row_number = 1;
else row_number + 1;
run;
Wskazówka oświadczenie w etapie danych BY
odpowiada klauzuli PARTITION BY
w ANSI SQL, ale kroku PROC SORT
sortuje także kolumn w klauzuli ORDER BY
. Zauważ też, że jeśli zapytanie, które "migrujesz" zawiera klauzulę SQL ORDER BY
, musisz wykonać to z kolejnym krokiem PROC SORT
.
@Joe dobry połów! i całkowicie się z tym zgadzam, ja to zredagowałem! dzięki! – isJustMe
tak, jesteś mgith być napowietrznych w tym przypadku – isJustMe
W tej odpowiedzi brakuje kroku sortowania, o którym Bob wspomina poniżej. Bez dodawania dodatkowego kroku sortowania nie można uzyskać takich samych wyników jak powyższy przykład SQL. –