如何解决访问,多个 iif 功能合二为一
我试图想出一个新的 iif 语句来具有不同的逻辑,但是当我看到来自 1 的记录时,我的新表中的值为 0 - Master 应该有一个平衡。
- 如果 1 - Master = 1234,则使用“余额”
- 如果记录来自 1 - Master 1234,则应用 isnull 逻辑。
- 如果记录为 null ,则使用 avg factor * balance
- 如果记录不为空,则使用 factor * balance
IIf([1 - Master].rln='1234',[1 - Master].Balance,(IIf(IsNull([0 - Month End Factors].Factor),[1 - Master].Balance*[0 - Average Factors].[Avg Factor],[1 - Master].Balance*[0 - Month End Factors].Factor)))
AS [Final Balance]
有人可以帮忙吗?运行后我得到了 0,可能是我的语句写得不正确。
谢谢。
解决方法
没有发现语法有什么问题,但表达式可能更简单。考虑:
IIf([1 - Master].rln='1234',[1 - Master].Balance,[1 - Master ].Balance * Nz([0 - Month End Factors].Factor,[0 - Average Factors].[Avg Factor]))
AS [Final Balance]
仅当查询中的多个表具有相同的字段名称时,字段名称才必须以表名称为前缀。
IIf([rln]='1234',[Balance],[Balance] * Nz([Factor],[Avg Factor])) AS [Final Balance]
IsNull() 和 Nz() 都是 VBA 函数。为避免在 SQL 语句中调用 VBA,请使用 IS NULL。
IIf([rln]='1234',[Balance] * IIf([Factor] IS NULL,[Avg Factor],[Factor])) AS [Final Balance]
如果 rln
是数字类型字段,请不要在 1234 左右使用撇号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。