请帮我牛逼进行以下选择查询SQL选择基于界限上排
源表
name Amount
-----------
A 2
B 3
C 2
D 7
如果限制为5,然后导致表应该是
name Amount
-----------
A 2
B 3
如果限8然后结果表
name Amount
-----------
A 2
B 3
C 2
请帮我牛逼进行以下选择查询SQL选择基于界限上排
源表
name Amount
-----------
A 2
B 3
C 2
D 7
如果限制为5,然后导致表应该是
name Amount
-----------
A 2
B 3
如果限8然后结果表
name Amount
-----------
A 2
B 3
C 2
您可以使用窗口函数来实现这一目标:
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子句过滤结果以查找行,直到数量总和低于或等于给定的限制。
更多关于这个话题:
的SQL Server版本使用的是 –
为什么* C *排除在外,如果限制为5? – Stephen
您的限额是基于金额总额而非记录数量? –