我有一个场景,我希望为表上的每个agent_ID提取前500行。 示例:
表名:代理人
架构:AGENT_ID,CUST_ID,CUST_F_NAME,CUST_L_NAME
PK:CUST_ID
情景:
AGENT_ID 1234 has 800 results AGENT_ID 4567 has 1000 results AGENT_ID 1212 has 300 results
我希望我的结果每个AGENT_ID最多只能提取500条记录。该表有数百个不同的AGENT_ID。
我在尝试编写一个能够提取这些数据的SQL并且想要一些帮助或建议时遇到问题。
答案 0 :(得分:3)
您可以使用分析函数row_number()
(或者rank()
)来执行此操作:
select agent_id, cust_id, cust_f_name, cust_l_name
from
( select agent_id, cust_id, cust_f_name, cust_l_name
, row_number() over (partition by agent_id order by whatever) as rn
from agent
)
where rn <= 500;
将whatever
更改为可获取所需数据的列列表(最新500,最旧500或其他)。