首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Access SQL:结合SELECT和用户输入

问Access SQL:结合SELECT和用户输入
EN

Stack Overflow用户
提问于 2016-06-23 13:29:32
回答 1查看 307关注 0票数 0

我在Access中创建一个表单,用户可以从可能的商品列表中选择商品,然后查询计算所选商品的平均价格。

用户的输入字段是一个列表(List147)。假设用户选择铜,那么我想要返回铜的平均值。所有商品的价格都在一个名为CommMaterial的表格中。下面的片段显示了表的样子。

​

​

我在SQL方面很新,不知道如何对其进行编码。似乎SELECT语句需要是动态的,但我不知道如何做到这一点。我想象这样的事情:

代码语言:javascript
复制
SELECT AVG(CommMaterial.[Forms]![NameForm]![List147])
FROM CommMaterial;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-23 13:42:38

为了避免动态sql和VBA,您可以使用一些SQL将您的表设置为稍微更具可查询性的格式:

代码语言:javascript
复制
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;

它将为您提供一个有三列的结果集:

代码语言:javascript
复制
DateComm | Metal | Price

您可以将其保存为查询qry_CommMaterial,然后您的SQL将是:

代码语言:javascript
复制
SELECT Avg(Price) FROM qry_CommMaterial WHERE metal = [Forms]![NameForm]![List147];

你也可以把这一切都强加于人:

代码语言:javascript
复制
 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];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37993082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档