我在Access中创建一个表单,用户可以从可能的商品列表中选择商品,然后查询计算所选商品的平均价格。
用户的输入字段是一个列表(List147)。假设用户选择铜,那么我想要返回铜的平均值。所有商品的价格都在一个名为CommMaterial的表格中。下面的片段显示了表的样子。

我在SQL方面很新,不知道如何对其进行编码。似乎SELECT语句需要是动态的,但我不知道如何做到这一点。我想象这样的事情:
SELECT AVG(CommMaterial.[Forms]![NameForm]![List147])
FROM CommMaterial;发布于 2016-06-23 13:42:38
为了避免动态sql和VBA,您可以使用一些SQL将您的表设置为稍微更具可查询性的格式:
SELECT DateComm, 'Copper' as Metal, Copper as Price FROM CommMaterial
UNION ALL
SELECT DateComm, 'Nickel' as Metal, Nickel as Price FROM CommMaterial
UNION ALL
SELECT DateComm, 'Aluminum' as Metal, Aluminum as Price FROM CommMaterial;它将为您提供一个有三列的结果集:
DateComm | Metal | Price您可以将其保存为查询qry_CommMaterial,然后您的SQL将是:
SELECT Avg(Price) FROM qry_CommMaterial WHERE metal = [Forms]![NameForm]![List147];你也可以把这一切都强加于人:
SELECT Avg(Price)
FROM (
SELECT DateComm, 'Copper' as Metal, Copper as Price FROM CommMaterial
UNION ALL
SELECT DateComm, 'Nickel' as Metal, Nickel as Price FROM CommMaterial
UNION ALL
SELECT DateComm, 'Aluminum' as Metal, Aluminum as Price FROM CommMaterial) as subUnion
WHERE metal = [Forms]![NameForm]![List147];https://stackoverflow.com/questions/37993082
复制相似问题