1

我有一张包含日期、项目和数量的表格。

我需要一个 sql 查询来返回每天的总数,但总数是数量减去前一天的总数。数量随着月份的推移而累积。所以第一个可能有 5 个,第二个有 12 个,第三个有 20 个。

所以第 1 次加 5 第 2 次加 7 为 12 第 3 次加 8 为 20。

我过去做过类似的事情,但找不到或不记得了。我知道我需要一个相关的子查询。

TIA

--

编辑 1

我正在使用 Microsoft Access。日期是日期时间字段,项目是文本,数量是数字

--

编辑 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一样把它粘在那里,但没有运气。我要继续研究。

4

2 回答 2

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 
于 2010-02-06T22:20:30.907 回答
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;
于 2010-02-06T22:28:02.527 回答