MS Access 表达式问题通过表达式选择变得更细化

问题描述 投票:0回答:1

我需要在 MS Access 中构建表达式的帮助。我知道基础知识,但我以前没有做过复杂的表达。

数据库从工作中获取劳动力和材料等数据,并将其标记为我们向客户收取的费用。劳动力方面我已经搞清楚了,但是物质方面更复杂。目前的公式是这样的:

Material Cost: IIf([MATERIAL_TYPE]="S" Or [MATERIAL_TYPE]="M",[MATERIAL_COST]*1.42,[MATERIAL_COST])

我需要做的是在方程

([MATERIAL_TYPE]="T")
中添加新的材料类型,但仅当
[MATERIAL_TYPE]="T"
来自帐户 5、6 或 7 时。我该怎么做?

我尝试过这个表达式,但语法不正确。

Material Cost: IIf([MATERIAL_TYPE]="S" Or [MATERIAL_TYPE]="M" Or ([MATERIAL_TYPE]="T" where [ACCT = "5" "6" "7"]),[MATERIAL_COST]*1.42,[MATERIAL_COST])

样本数据:

Product 1 (Material Type S, Account 4)  
Product 2 (Material Type S, Account 5)  
Product 3 (Material Type M, Account 2)  
Product 4 (Material Type M, Account 6)  
Product 5 (Material Type T, Account 6)  
Product 6 (Material Type T, Account 9)  
Product 7 (Material Type T, Account 1)

使用示例数据,我希望选择前 5 个产品,而不是最后 2 个产品,如果这有意义的话。

ms-access
1个回答
0
投票

由于您想排除产品 6 和 7,您可以将条件放在 WHERE 子句中,而不是 IFF 中。

SELECT [MATERIAL_COST]*1.42 AS Cost 
FROM table 
WHERE [MATERIAL_TYPE]="S" 
   OR [MATERIAL_TYPE]="M" 
   OR ([MATERIAL_TYPE]="T" AND ACCT in ("5", "6", "7") )
© www.soinside.com 2019 - 2024. All rights reserved.