我有一个包含rownum的SQL代码。如下:
proc sql;
create table dt as
select d1.frst + (rownum - 1) as dt
from stg.stvcipc, work.d1
where rownum <= d1.lst - (d1.frst - 1);quit;
d1.frst和d1.lst是日期值。我不知道什么是rownum意味着什么,尝试做什么。我需要将此代码更改为SAS。和SAS一样吗?
from sfrstcr r
, ssrmeet m
, ( select d1.frst + (rownum - 1) dt
from saturn.stvcipc -- about 1200
, ( select min(stvterm_start_date) frst
, max(stvterm_end_date) lst
from saturn.stvterm v
where v.stvterm_fa_proc_yr = '&v_aidy' -- PARM '0910'
) d1
where rownum <= d1.lst - (d1.frst - 1)
) dt
这是原始代码的一部分。它在select语句中选择
答案 0 :(得分:1)
Rownum是一个伪列。它对结果集中的记录进行编号。在select语句中满足where条件的第一条记录给出rownum = 1,并且满足相同条件的每个后续记录都会增加rownum。
答案 1 :(得分:0)
根据这个reference,SAS proc SQL有一个名为monotonic()
的函数,它提供相同的功能。我不知道它是否可以在一个声明中被调用两次。您可以尝试以下方法:
proc sql;
create table dt as
select d1.frst + (monotonic() - 1) as dt
from stg.stvcipc cross join work.d1
where monotonic() <= d1.lst - (d1.frst - 1);
quit;
如果这不起作用,如果不更好地理解代码的意图,就很难说该怎么做。