gpt4 book ai didi

sql - SAS Proc sql 行号

转载 作者:行者123 更新时间:2023-12-02 04:56:08 24 4
gpt4 key购买 nike

如何获取 proc sql 中观察的行号,类似于 proc sql 中数据步骤的_N_?

例如

proc sql outobs=5;
select case mod(<something>, 2)
when 0 then "EVEN"
else "ODD"
end
from maps.africa
end;

想要:

Row
----------
1 odd
2 even
3 odd
.
.
.

最佳答案

Monotonic() 确实存在,并且在某些情况下可能会有所帮助,但它与行号不同,并且使用起来可能很危险,特别是考虑到 SQL 是一种高度优化的语言,愉快地将您的查询分成多个线程 - 在这种情况下,monotonic() 将无法完成您想要的任务。特别是,它在不同的数据集、不同的 SAS 安装上,甚至只是在不同的日子里,可能会表现出不同的行为。

执行此操作的安全方法是创建一个 View ,并将_n_复制到永久变量中。

data africa_v/view=africa_v;
set maps.africa;
rownum=_n_;
run;

proc sql;
select case mod(rownum, 2)
when 0 then "EVEN"
else "ODD"
end
from africa_v;
quit;

这几乎不会增加任何开销(几毫秒)并达到相同的结果,但可以安全地确信您拥有正确的顺序。这两个查询(这个查询和 Shipt 查询)在我的机器上运行的时间几乎相同,完全在误差范围内(所有记录为 2.95 秒 vs 2.98 秒)。

关于sql - SAS Proc sql 行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967186/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com