一尘不染

将行限制为MySQL中某一列的总和等于某个值的位置

mysql

我想编写一个查询,该查询返回所有行,直到某一列值的总和达到某个值为止。

例如在下表中:

           DATE             ETC      Meeting
    2013-02-01 00:00:00    85482        1
    2013-02-01 00:00:00    47228        2
    2013-02-02 00:00:00    12026        4
    2013-02-03 00:00:00    78927        6
    2013-02-04 00:00:00    85662        2
    2013-03-05 00:00:00    47978        1
    2013-08-07 00:00:00     8582        1

如果我要获取行,直到列的总和Meeting等于7。

           DATE             ETC      Meeting
    2013-02-01 00:00:00    85482        1
    2013-02-01 00:00:00    47228        2
    2013-02-02 00:00:00    12026        4

如果我要获取行,直到列的总和Meeting等于13。

     DATE                   ETC      Meeting
    2013-02-01 00:00:00    85482        1
    2013-02-01 00:00:00    47228        2
    2013-02-02 00:00:00    12026        4
    2013-02-03 00:00:00    78927        6

阅读 207

收藏
2020-05-17

共1个答案

一尘不染

这是一种应在MySQL中工作的方法:

SELECT
  O.Id,
  O.Type,
  O.MyAmountCol,
  (SELECT
     sum(MyAmountCol) FROM Table1
   WHERE Id <= O.Id) 'RunningTotal'
FROM Table1 O
HAVING RunningTotal <= 7

在这种情况下,它涉及计算运行总计并选择记录,而运行总计小于或等于给定数字7

SQL小提琴

2020-05-17