1

こんにちは私はテーブルの最後の行を抽出する次のデータステップを実行しています。で同じことを行うにはどうproc sqlすればよいですか。最後の行に直接アクセスできれば、はるかに高速になることを期待しています。

data refTable;
    set vhd(keep= v69c1ec v69dhec v69nbms fixing where=(fixing = 'continu')) end=eof;
    if eof then output;
    by v69dhec v69nbms;
run;

ありがとう

4

2 に答える 2

2

いいえ、SQL でこの動作を再現することはできません。SQL には「行の順序」という自然な意味はありません。「テーブルの最後の行」にアクセスしていないことに注意してください。句の適用に最後の適格な行を取得しています。WHERE

本当に最後の行を取得する場合は、次のようにPOINT=andオプションを使用すると、はるかに高速な SAS 手法になります。NOBS=

data refTable;
    get_me = nobs;
    set vhd(keep=v69c1ec v69dhec v69nbms fixing) point=get_me nobs=nobs;
    output;
    stop;
run;

これは、句を含めない場合にのみ機能することに注意してください!WHERE

于 2013-01-02T14:29:57.647 に答える
1

私の知る限り、proc sql直接使用して最後の行にアクセスすることはできません。プロセスは、データを並べ替えてから、 を使用して最初の行を選択することoutobs = 1です。

This question hereは、SAS で最後の行を効率的に取得する方法を説明しています。基本的に、SAS にデータ セット内のレコード数を問い合わせてから、そのレコードに直接スキップします。

于 2013-01-02T14:24:10.197 に答える