2

我一直试图让运行总和在 Access 查询中工作。我一直在玩各种 Dsum 表达式,但它们都导致了错误。基本上,我有两列,一个是一年,一个是那一年的零件计数,我希望第三个是多年来零件计数的运行总和。

我的前两列的 SQL 如下所示:

    SELECT DatePart("yyyy",[EoL]) AS AYear, Count(EquipmentQuery.Equipment) AS EquipCount
    FROM EquipmentQuery
    GROUP BY DatePart("yyyy",[EoL])
    ORDER BY DatePart("yyyy",[EoL]);

关于如何让第三列作为运行总和工作的任何建议?谢谢您的帮助!

4

2 回答 2

2

如果您创建报告,则有一个属性可以计算运行总和

如果您更喜欢查询,可以使用子查询来计算运行总和:

SELECT  DatePart("yyyy",[EoL]) AS AYear
,       Count(eq1.Equipment) AS EquipCount
,       (
        SELECT  Count(eq2.Equipment)
        FROM    EquipmentQuery eq2
        WHERE   DatePart("yyyy",eq2.[EoL]) <= DatePart("yyyy",eq1.[EoL])
        ) AS RunningSuma
FROM    EquipmentQuery AS eq1
GROUP BY 
        DatePart("yyyy",[EoL])
ORDER BY 
        DatePart("yyyy",[EoL]);
于 2013-05-02T21:25:29.170 回答
0

try the following code:

SELECT Year([EQ1].[EOL]) AS Yr, 
Sum(IIf(Year([EQ2].[eol])=Year([EQ1].[eol]),1,0)) AS [current], 
Sum(IIf(Year([EQ2].[eol])<=Year([EQ1].[eol]),1,0)) AS [cumulative]
FROM [equipmentquery] AS EQ1, [equipmentquery] AS [EQ2]
GROUP BY Year([EQ1].[EOL]);

ansd if you want running totals instead of counts:

SELECT Year([EQ1].[EOL]) AS Yr, 
Sum(IIf(Year([EQ2].[eol])=Year([EQ1].[eol]),[EQ2].equipment,0)) AS [current], 
Sum(IIf(Year([EQ2].[eol])<=Year([EQ1].[eol]),[EQ2].equipment,0)) AS [cumulative]
FROM [equipmentquery] AS EQ1, [equipmentquery] AS [EQ2]
GROUP BY Year([EQ1].[EOL]);
于 2013-05-03T14:07:06.927 回答