ms-access - Ms Access 需要根据同一个表字段的多个条件进行计算
问题描述
我想就一个简单的 MS Access 项目提出以下问题,
我有一个包含 4 个字段 A、B、C、SUM 的表,我想创建一个表单来获取值 A、B、C(完成)和一个查询来根据表字段的多个条件计算结果:
IF A<=5 AND B<=2 THEN SUM = X1 value + Y1 value + (C * Z1 value) + H
IF A>=5,01 AND A<50 AND B<=2 THEN SUM = X2 value + Y2 value + (C * Z1 value)+ H
IF A>50 AND B<=2 THEN SUM = X3 value + Y3 value + (C * Z1 value)+ H
(X1、X2、X3、Y1、Y2、Y3、Z1、Z2、H 是我已经拥有的整数值)
IF A<=5 AND B>2 THEN SUM = X1 value + Y1 value + (C * Z1 value)+ H
IF A>=5,01 AND A<50 AND B>2 THEN SUM = X2 value + Y2 value + (C * Z1 value)+ H
IF A>50 AND B>2 THEN SUM = X3 value + Y3 value + (C * Z1 value)+ H
有人可以帮助我如何实现这个公式,我想我必须建立一个查询,但是有人可以指导我的语法吗?
谢谢大家。!!!
解决方案
首先,我建议您不要使用“SUM”作为字段名称,因为它代表一个聚合函数,而且我相信它也是一个保留字。检查(https://support.microsoft.com/en-us/office/learn-about-access-reserved-words-and-symbols-ae9d9ada-3255-4b12-91a9-f855bdd9c5a2#:~:text=%22Reserved% 20words%22%20are%20words%20and,when%20referring%20to%20the%20field. ) 在 MS Access SQL 中,您可以使用条件语句 IIF,例如
IIF(条件,如果为真则返回,如果为假则返回)。最终,您可以嵌套 IIF 语句。例子
res(Your SUM) =(IIF(A<=5 AND B<=2, X1 + Y1 + H + C*Z1,
IIF(A BETWEEN 5 AND 50 AND B2 >2,X2 + Y2 + H + C*Z1,X3 + Y3 + H + C*Z1))
所以你的查询应该是这样的
"SELECT A, B, C, (IIF(A<=5 AND B<=2, X1 + Y1 + H + C*Z1,
IIF(A BETWEEN 5 AND 50 AND B2 >2,X2 + Y2 + H + C*Z1,X3 + Y3 + H + C*Z1)) AS res
FROM your_table_name"
您必须提供 Xs、Ys、Zs、H 和 C 值作为参数或硬输入。您也可以考虑使用 BETWEEN。
它可能变得有点混乱,但就是这样。
推荐阅读
- c# - 执行任务列表时出现问题,每个任务中有多个异步调用
- locust - 如何在 locust.io 用户工作流程结束时清除 cookie
- material-design-in-xaml - 仅当鼠标悬停在行上时,如何在 DataGrid 上显示按钮?
- excel - 动态选择单元格并在图表中输入
- sql - How to calculate the median in Postgres?
- c# - 从字节数组中填充和提取数据
- java - How can I create single executable jar in my gradle project
- html - 移动菜单仅在 Iphone 上不显示
- javascript - 在javascript中设置对象属性
- python - 有人可以帮助解释为什么不能在包装器中使用 klass 吗?关于 python __closure__