SQL根据限制选择顶行

时间:2017-01-11 14:27:54

标签: sql .net sql-server

请帮我在下面选择查询

来源表

name Amount  
 -----------
 A   2    
 B   3    
 C   2
 D   7

如果limit为5,则结果表应为

name Amount  
 -----------
 A   2    
 B   3   

如果limit是8则结果表

name Amount  
 -----------
 A   2    
 B   3    
 C   2

1 个答案:

答案 0 :(得分:4)

您可以使用窗口功能来实现此目的:

select name,
    amount
from (
    select t.*,
        sum(amount) over (
            order by name
            ) s
    from your_table t
    ) t
where s <= 8;

分析函数sum将根据给定的订单order by name逐行汇总。

一旦你使用这个找到了直到给定行的总和,你可以使用一个简单的where子句来过滤结果,以找到行数,其中金额的总和低于或等于给定的限制。

有关此主题的更多信息: