Jednym ze sposobów uruchomienia kodu SQL w SAS jest wykonanie PROC SQL. Np.
proc sql; SELECT * FROM SASHELP.CLASS ; quit;
W celu ograniczenia liczby przetwarzanych lub wyświetlanych rekordów możemy zastosować opcje PROC SQL. I tak:
- INOBS mówi ile obserwacji z każdego zbioru wymienionego w SQL należy wziąć do przetwarzania (odpowiednik TOP/LIMIT użytego w podzapytaniu)
- OUTOBS mówi ile obserwacji pokazać na koniec przetwarzania (odpowiednik TOP/LIMIT w głównym zapytaniu)
Tak pobierzemy trzy wiersze ze zbioru wynikowego:
proc sql outobs=3; SELECT * FROM SASHELP.CLASS ; quit;
Wszystko fajnie, tylko co jeśli nie chcemy albo nie możemy używać opcji PROC SQL (bo np. piszemy własne oprogramowanie wykorzystując SAS Integration Technologies)? Wówczas mamy dwie możliwości, w zależności od skomplikowania zapytania.
W najprostszym przypadku, jeśli potrzebujemy odpowiednik „SELECT TOP 100 * FROM tabela” wystarczy dodać klauzulę OBS=100 po FROM – zadziała to tak samo jak INOBS. Uwaga – jeśli stosujemy aliasy tabel, to klauzulę należy dodać przed nimi, np.
SELECT * FROM SASHELP.CLASS (OBS=100) sc
Jeśli potrzebujemy ograniczyć listę wynikową, to można ponumerować wiersze za pomocą nieudokumentowanej funkcji MONOTONIC() (której na dodatek SAS nie wspiera)
SELECT * FROM SASHELP.CLASS sc WHERE MONOTONIC() <= 3
Jeśli łączymy się do zbiorów w zewnętrznych bazach danych możemy też zastosować mechanizm SQL Pass-through. Dzięki niemu możemy wykorzystać dialekt SQL wykorzystywany w danym środowisku, a dodatkowo zrzucimy przetwarzanie na bazę danych, a nie na SAS. Więcej o SQL Passthrough np. tutaj lub tutaj.