获取SAS SQL中表的最后一行

获取SAS SQL中表的最后一行,sql,sas,Sql,Sas,您好,我正在执行以下数据步骤,提取表的最后一行。 如何在proc-sql中执行相同的操作,我希望如果可以直接访问最后一行,速度会快得多 data refTable; set vhd(keep= v69c1ec v69dhec v69nbms fixing where=(fixing = 'continu')) end=eof; if eof then output; by v69dhec v69nbms; run; 谢谢据我所知,您无法直接使用proc-sql访问最后一

您好,我正在执行以下数据步骤,提取表的最后一行。 如何在
proc-sql
中执行相同的操作,我希望如果可以直接访问最后一行,速度会快得多

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

谢谢

据我所知,您无法直接使用
proc-sql
访问最后一行。该过程将是对数据进行排序,然后使用
outobs=1
选择第一行


这个问题解释了如何在SAS中高效地获取最后一行。基本上,询问SAS数据集中有多少条记录,然后直接跳到该记录。

不,不可能在SQL中重现这种行为。SQL中没有“行顺序”的自然含义。请注意,您不是在访问“表的最后一行”;在应用
WHERE
子句之后,您将获得最后一个符合条件的行

如果您真的得到了最后一行,那么更快的SAS技术将是使用
POINT=
NOBS=
选项,如下所示:

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

请注意,只有在不包含
WHERE
子句的情况下,这才有效

如果使用
firstobs
obs
语句作为
proc sql
语句中的数据集选项,会怎么样?处理SAS数据集时,
proc-sql
是否尊重或忽略这些选项?@RobPenridge是的,
FIRSTOBS=
OBS=
选项在
proc-sql
处理过程中得到尊重,但它们与所问问题无关。而且,当出现
WHERE
子句时,它们的意义(对我来说)是模糊的;我自己很少使用这两个选项。啊,好的一点——我没有看到原始问题中的where子句。谢谢