[英]How do I find the 4th record in SQL/ SAS PROC SQL?
最初,我嘗試在此處包含一個示例 SAS 表,但我無法讓腳本在應有的位置換行 - 如果您可以讓我知道如何在文本編輯器中鍵入時手動插入換行符,謝謝
我的問題:
對於 SAS PROC SQL - 如何返回第 4 高記錄(即排序后 - 就像客戶/資產列表)? (即我不想要第 1、第 2 或第 3,因此不使用 outobs=)
同樣,SQL 的語法是什么(可能與 SAS PROC SQL 不同) - 我相信它可以利用 LIMIT 參數?
感謝您的幫助
在數據步驟中,您可以使用自動_N_
變量。 對於 SQL,在 SAS 中有一個未記錄的 function 稱為monotonic()
。 它為您提供記錄編號。 這里有幾種方法可以滿足您的需要:
data blah;
letter = "ay "; number = 2; output;
letter = "bea"; number = 3; output;
letter = "see"; number = 42; output;
letter = "Dea"; number = 99; output;
letter = "Eee"; number = 1; output;
run;
data new;
set blah;
theN = _N_; * if you want to save the record number;
if theN = 4;
run;
proc sql;
create table new2 as
select blah.*, monotonic() as theN
from blah
having (theN = 4)
;
quit;
如果數據未排序,您可以使用 order by 子句對其進行排序:
proc sql;
create table ordered as
select * from blah order by letter;
create table new2 as
select ordered.*, monotonic() as theN
from ordered
having (theN = 4);
drop table work.ordered;
quit;
如果數據是數字,您也可以使用 proc rank。
data blah;
letter = "ay "; number = 2; output;
letter = "bea"; number = 3; output;
letter = "see"; number = 42; output;
letter = "Dea"; number = 99; output;
letter = "Eee"; number = 1; output;
run;
proc rank data = blah out = new3 (where = (theRank = 4));
var number;
ranks theRank;
run;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.