好吧,我现在正在为我的大学课程设计一个数据库。我正在查询中的一个计算字段上挣扎。计算字段通过表达式生成器由IIF表达式组成。主要的问题是,计算的字段工作,然而,由于我已经把“不适用”在IIF的错误部分,它仍然是#错误?下面是我的IIF!
IIf([Quantity]=20,[Total After Discount]*0.95,
IIf([Quantity]=50,[Total After Discount]*0.925,
IIf([Quantity]=100,[Total After Discount]*0.9,
IIf([Quantity]>=200,[Total After Discount]*0.875,"Not Applicable."))))请问有什么帮助/想法或建议吗?
发布于 2014-12-09 17:01:06
此查询计算折扣后的总数。因此,它的投入应该是折扣前的总和。你可能在做这样的事情:
SELECT IIf([Quantity]=20,[Total After Discount]*0.95,...) AS [Total After Discount]
FROM ...因此,在这个表达式中,[Total After Discount]指的是自身,这是不可能的。把它改成
SELECT IIf([Quantity]=20,[Total Before Discount]*0.95,...) AS [Total After Discount]
FROM ...如果[Total After Discount]是另一个查询或表中的列,并且希望在结果中再次使用相同的列名,则可以通过通过表或查询名称对列名进行限定来做到这一点:
SELECT
IIf([Quantity]=20, MyTable.[Total After Discount]*0.95, ...)
AS [Total After Discount]
FROM MyTable这消除了不允许的递归。
但你的逻辑真的正确吗?应该是:
IIf([Quantity]>=200,[Total Before Discount]*0.875,
IIf([Quantity]>=100,[Total Before Discount]*0.9,
IIf([Quantity]>=50,[Total Before Discount]*0.925,
IIf([Quantity]>=20,[Total Before Discount]*0.95,[Total Before Discount]))))把逻辑转过来。你不是显示的,而是折扣后的总数,所以你应该显示总数,而不是“不适用”。
如果您正在显示折扣,那么是的,请显示“不适用”:
IIf([Quantity]>=200,"12.5%",
IIf([Quantity]>=100,"10%",
IIf([Quantity]>=50,"7.5%",
IIf([Quantity]>=20,"5%","Not Applicable")))) As DiscountPercent发布于 2014-12-09 17:06:36
我不认为你可以将数字/文本的答案混合在一个计算的字段中。在这种情况下,最好是使用查询,而不是使用计算字段。到目前为止,我一直避免使用计算字段来解决它们的限制(如以下所示)。
https://stackoverflow.com/questions/27384340
复制相似问题