0

任何人都可以建议以下 IF 语句的语法,

IIf
  (  Cur_Insert_Cost,
     Cur_Insert_Cost/Cur_Insert_Edges,
     Cur_Regrindable_Cost/(Cur_Regrinds_Possible+1)
   ) AS Cur_Cost_Edge_Regrind

以上行来自带有 Ms-Access DB 的 Excel 报告

条件部分没看懂……!!!

Cur_Insert_Cost、Cur_Insert_Edges、Cur_Regrindable_Cost ...等是列名

4

3 回答 3

4

IIF 是一个三元运算符。它由逗号分隔的三部分组成

iif(expression, truepart, falsepart)

在您的情况下,这意味着:

if  Cur_Insert_Cost is not zero then 
    return the result of the expression Cur_Insert_Cost/Cur_Insert_Edges
else
    return the result of the expression Cur_Regrindable_Cost/(Cur_Regrinds_Possible+1)

结果将在查询中命名为 Cur_Cost_Edge_Regrind

于 2012-10-10T14:53:21.227 回答
0

测试是 Cur_Insert_Cost 是否被视为空的 false 或任何 Access 被视为 false。

所以这可能意味着 Cur_Insert_Cost = NULL, 0, '', false (我想我忘记了一些替代方案)

如您所见,第一部分使用 is 和 IIRC Cur_Insert_Cost 应用于 NULL 将给出异常(但这只是我的记忆)

于 2012-10-10T14:53:23.730 回答
0

该声明说 column 的Cur_Cost_Edge_Regrind值为:

  • Cur_Insert_Cost/Cur_Insert_Edgesif的结果Cur_Insert_Cost为 TRUE(或 1)
  • Cur_Regrindable_Cost/(Cur_Regrinds_Possible+1)if的结果Cur_Insert_Cost为 FALSE(或 0)

希望有帮助...

于 2012-10-10T14:59:56.880 回答