在ACCESS女士的表格中,用户可以从列表中选择商品(如铜,镍等),从列表中选择商品价格日期。 应计算过去12个月的平均商品价格。
例如:用户选择铜作为商品,2010年2月1日,02/01/2010。然后我希望在这段时间内计算平均价格:[02/01/2009 - 02/01/2010]。
我不确定如何在查询表单中写这个。这是当前不完整的代码;
SELECT Avg(CommPrices.Price) AS Expr1,
FROM CommPrices
WHERE (((CommPrices.Commodity)=[Forms]![Tool Should Cost]![List243]))
AND CommPrices.DateComm = [Forms]![Tool Should Cost]![List55];
List243是用户可以选择的商品列表,list55是用户可以选择的日期列表。所有数据均来自表CommPrices。
注意:DateComm列中最早的日期是01/01/2008。因此,如果用户选择例如02/01/2008的日期,则无法计算2008年1月2日之前过去12个月的平均值。我确实希望代码仍然使用可用日期计算平均值。 (在这个例子中,它只是过去一个月的平均值)
第二个注释:DateComm列仅包含每月第一天的月度日期(例如01/01/2008,02/01 / 2008,03 / 01/2008)。 list55中列出的日期可以指代当月的不同日期(例如03/16/2009),在这种情况下,我希望代码仍然使用最接近的商品日期来计算过去12个月的平均值。因此,如果用户选择日期03/16/2009,我希望代码计算03/01/2008 - 03/01/2009的12个月平均值。
答案 0 :(得分:2)
对于"整数"它将是几个月:
SELECT
Avg(CommPrices.Price) AS AveragePrice,
FROM
CommPrices
WHERE
CommPrices.Commodity=[Forms]![Tool Should Cost]![List243]
AND
CommPrices.DateComm = BETWEEN
DateSerial(Year([Forms]![Tool Should Cost]![List55]) - 1, Month([Forms]![Tool Should Cost]![List55]), 1)
AND
DateSerial(Year([Forms]![Tool Should Cost]![List55]), Month([Forms]![Tool Should Cost]![List55]), 1)