我已经为此尝试了一些其他主题,但无法获得满足我要求的答案,因此发布了一个新问题。对不起,这个。
我正在尝试查询mysql以获取'sum'数据,直到达到定义的值。像
从我的表'购买',对于从最后一行开始的每个'sid',我需要'pqty'的总和,直到结果等于来自字符串的值(但是尝试我已经给出了某个值)。 让我用我表中的行来定义--- '购买'中'sid = 1'的行是这样的---
date pqty prate pamt 2014/04/29 5 38000 190000 2014/05/04 1 38000 38000 2014/05/13 20 35000 700000 2014/05/19 1 38000 38000
从这一行开始,从最后一行开始,我希望'sum(pqty)直到达到19(现在)。它是通过添加最后2行(19)来实现的。并在这里停止总和并返回'pqty','prate'和'pamt'的价值或总和。为了达到这个目的,我根据在这个论坛上发现的例子尝试了以下内容。
SELECT date, pqty, @total := @total + pqty AS total
FROM (purchase, (select @total :=0) t)
WHERE @total<19 AND sid = $sid ORDER BY date DESC
但它不适合我。请指导我完成这个。如果这不是我的目的的好技术,也会提出别的建议。
提前谢谢.....
答案 0 :(得分:0)
不是100%肯定,但我认为这两项都有效......
SELECT x.*, SUM(y.pqty) FROM purchase x
JOIN purchase y
ON y.date >= x.date
GROUP
BY x.date
HAVING 19 BETWEEN SUM(y.pqty)-x.pqty AND SUM(y.pqty)
OR 19 >= SUM(y.pqty);
SELECT a.*
FROM
( SELECT x.*, @i := @i+pqty i
FROM purchase x
, (SELECT @i:= 0) var
ORDER
BY x.date DESC
) a
WHERE 19 BETWEEN a.i-a.pqty AND a.i
OR 19 >= a.i;