SUM直到按列排序的值

Mak*_*kah 0 sql t-sql sql-server

我有一张产品,数量和重量的表格.我需要找到达到一定值的较重的产品.例:

表:

Product     Qty Weight
PEN         100 50
PEN          10 30
PEN          80 20
PEN         250 20
PEN        1000 10
PAPER       150 80
PAPER      1500 20
Run Code Online (Sandbox Code Playgroud)

查询:查找按权重排序达到最大200数量的PEN.

结果:

PEN         100 50
PEN          10 30
PEN          80 20
Run Code Online (Sandbox Code Playgroud)

编辑: 结果是因为:100 + 10 + 80 <200.

Lau*_*nce 5

如果您使用的是SQL 2012,则可以将此类方法用于运行总计:

Select
  Qty,
  Weight
From (
  Select
    Qty,
    Weight,
    Sum(Qty) Over(Order By Weight Desc Rows Between Unbounded Preceding And Current Row) As RunningQty
  From
    Test
  Where
    Product = 'PEN'
  ) a
Where
   RunningQty <= 200
Run Code Online (Sandbox Code Playgroud)

http://sqlfiddle.com/#!6/6157b/4