我的第一个查询如下所示:
select trans.* from
( select
acc_num,
acc_type,
trans_amount,
load_date,
rank() over(partition by acc_num order by load_date) as rk
from monetary
where rat_code = 123
) trans
where trans.rk =1;
第二个查询如下所示
with a as (
select *,
row_number() over(partition by acc_num order by load_date) as rn
from monetary
where rat_code = 123 )
select
acc_num,
acc_type,
trans_amount,
load_date
from a
where rn =1;
任何人都可以请帮助我,我得到不同数量的记录为两个案件。虽然查询是相同的。
1条答案
按热度按时间jvidinwx1#
这是因为rank和row_number之间存在差异。以下示例将显示
在上面的示例中,可以看到row number将计算唯一的行ID。而rank将以连续的方式提供唯一的ID。从上面的示例中可以看到,rank=1将提供3行,而rownum=1仅提供2行。