簡體   English   中英

如何在 SQL/SAS PROC SQL 中找到第四條記錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM