請幫我牛逼進行以下選擇查詢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
您的限額是基於金額總額而非記錄數量? –