Access,多个iif函数合二为一
Access, multiple iif functions in one
我正在尝试提出一个新的 iif 语句以具有不同的逻辑,但是当我看到 1 - Master 应该有余额的记录时,我在新的 table 中得到了 0。
- 如果 1 - Master = 1234 则使用“平衡”
- 如果记录来自 1 - Master <> 1234,则应用 isnull 逻辑。
- 如果记录为空,则使用平均因子 * 余额
- 如果记录不为空,则使用 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]
仅当查询中的多个 table 具有相同的字段名称时,字段名称必须以 table 名称作为前缀。
IIf([rln]='1234', [Balance], [Balance] * Nz([Factor], [Avg Factor])) AS [Final Balance]
IsNull() 和 Nz() 都是 VBA 函数。要避免在 SQL 语句中调用 VBA,请使用 IS NULL。
IIf([rln]='1234', [Balance], [Balance] * IIf([Factor] IS NULL, [Avg Factor], [Factor])) AS [Final Balance]
如果rln
是数字类型字段,不要在1234左右使用撇号。
我正在尝试提出一个新的 iif 语句以具有不同的逻辑,但是当我看到 1 - Master 应该有余额的记录时,我在新的 table 中得到了 0。
- 如果 1 - Master = 1234 则使用“平衡”
- 如果记录来自 1 - Master <> 1234,则应用 isnull 逻辑。
- 如果记录为空,则使用平均因子 * 余额
- 如果记录不为空,则使用 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]
仅当查询中的多个 table 具有相同的字段名称时,字段名称必须以 table 名称作为前缀。
IIf([rln]='1234', [Balance], [Balance] * Nz([Factor], [Avg Factor])) AS [Final Balance]
IsNull() 和 Nz() 都是 VBA 函数。要避免在 SQL 语句中调用 VBA,请使用 IS NULL。
IIf([rln]='1234', [Balance], [Balance] * IIf([Factor] IS NULL, [Avg Factor], [Factor])) AS [Final Balance]
如果rln
是数字类型字段,不要在1234左右使用撇号。