我有一张有日期,项目和数量的表格。
我需要一个sql查询来返回每天的总数,但总数是数量减去前一天的总数。随着月份的增加,数量会累积。因此,第一个可以有5个,第二个有12个,第三个有20个。
所以第1加5 第二名加7获得12 第3次加8来制作20。
我过去做过类似的事情,却无法找到或记住。我知道我需要一个相关的子查询。
TIA
-
编辑1
我正在使用Microsoft Access。 日期是日期时间字段, item是一个文本,和 数量是数字
-
编辑2
好的,这就是我的
SELECT oos.report_date, oos.tech, oos.total_cpe, oos_2.total_cpe
FROM oos INNER JOIN (
SELECT oos_2.tech, Sum(oos_2.total_cpe) AS total_cpe
FROM oos_2
WHERE (((oos_2.report_date)<#10/10/2010#))
GROUP BY oos_2.tech
) oos_2 ON oos.tech = oos_2.tech;
如何将oos.report_date放入我所说的#10/10/2010#。我以为我可以像mysql一样坚持下去,但没有运气。我要继续研究。
答案 0 :(得分:0)
通过在日期中添加一个并使值为负值来求和它们,从而从今天起计算昨天的总数:
SELECT report_date, tech, Sum(total_cpe) AS total_cpe
FROM (
SELECT oos.report_date, oos.tech, oos.total_cpe
FROM oos
UNION ALL
SELECT oos.report_date+1, oos.tech, 0-oos.total_cpe
FROM oos
)
WHERE (report_date < #10/10/2010#)
GROUP BY report_date, tech
ORDER BY report_date, tech
答案 1 :(得分:0)
好的,我明白了。
SELECT o.report_date, o.tech, o.total_cpe,
o.total_cpe - (
SELECT IIf(Sum(oos.total_cpe) is null, 0,Sum(oos.total_cpe)) AS total_cpe
FROM oos
WHERE (((oos.tech)=o.tech) AND ((oos.report_date)<o.report_date))
) AS total
FROM oos o;