我有一个表单[称为历史记录供应商工具],用户可以从列表[名为 list1 ]和开始/结束日期中选择供应商。 [分别称为 list2 和列表3 ] 假设用户选择supplierX并开始日期3/1/2016和结束日期6/1/2016。请参见下面数据集的图片。
然后,我想要一个查询,以便在该特定时间范围内选择具有最高总支出的供应商提供的materialID。在示例中,将是materialID ABC222222222。下面的代码给出了错误"表达式中不能有聚合函数(max(sum([item master] .spendpermaterial])。我认为聚合函数应该放在SELECT中言。
SELECT [Item Master].MaterialID, Max(Sum([Item Master].SpendPerMaterial)) AS Expr1
FROM [Item Master]
WHERE ((([Item Master].SupplierID)=[Forms]![History Supplier Tool]![List1]) AND (([Item Master].DateStamp)>=[Forms]![History Supplier Tool]![List2] And ([Item Master].DateStamp)<=[Forms]![History Supplier Tool]![List3]))
GROUP BY [Item Master].MaterialID;
答案 0 :(得分:1)
SELECT TOP 1 [Item Master].MaterialID, Sum([Item Master].SpendPerMaterial) AS Amount
FROM [Item Master]
WHERE ((([Item Master].SupplierName)=[list1]) AND (([Item Master].DateStamp)>=[list2] And ([Item Master].DateStamp)<=[list3]))
GROUP BY [Item Master].MaterialID
ORDER BY Sum([Item Master].SpendPerMaterial) DESC;