选择查询中的列总和

jel*_*ini 3 sql sql-server sql-server-2008

我在sql server select查询中有问题.我有下表.

ID-----Name----Quantity
1-------a-----------10
2-------b-----------30
3-------c-----------20
4-------d-----------15
5-------e-----------10
6-------f-----------30
7-------g-----------40
Run Code Online (Sandbox Code Playgroud)

我想选择那些数量总和<值的记录.例如,如果我说选择那些数量总和<65的记录,则输出将是

ID-----Name----Quantity
1-------a-----------10
2-------b-----------30
3-------c-----------20
Run Code Online (Sandbox Code Playgroud)

因为如果我们包含下一条记录,则数量总和将为75.

我想创建此查询.请帮帮我.

Mah*_*mal 5

您可以简单地使用相关的子查询来执行此操作,它将适用于MySQL和SQL Server.但它不是最好的性能明智的解决方案:

SELECT 
  ID, 
  Name,
  Quantity
FROM
(
  SELECT 
    t1.ID, 
    t1.Name,
    t1.Quantity,
    (SELECT SUM(t2.Quantity)
     FROM tablename AS t2
     WHERE t2.ID <= t1.ID) AS Total
  FROM Tablename AS t1
) AS t
WHERE Total < 65;
Run Code Online (Sandbox Code Playgroud)

看到它的实际效果:

这会给你:

| ID | NAME | QUANTITY |
------------------------
|  1 |    a |       10 |
|  2 |    b |       30 |
|  3 |    c |       20 |
Run Code Online (Sandbox Code Playgroud)