【问题标题】:Access Calculated Field with IF使用 IF 访问计算字段
【发布时间】:2014-03-03 02:55:11
【问题描述】:

我有一个跟踪玩家统计数据的表格:

Player        Pts    Reb    Ast    Blk    Stl    Tov
Jeff Teague   21     11      15     1      2      4

我想添加一个计算字段来计算该玩家得分的幻想点数。玩家得到:

1 fantasy point per Pts
1.25 fantasy points per Reb
1.5 fantasy points per Ast
2 fantasy points per Ast
2 fantasy points per Stl
-.5 fantasy points per Tov
1.5 fantasy points IF any two of Pts, Reb, Ast, Blk, or Stl are 10 or more
3 fantasy points IF any three of Pts, Reb, Ast, Blk, or Stl are 10 or more

所以在这个例子中他会得到 (21)+(11*1.25)+(15*1.5)+(2)+(2*2)-(.5*4)+(1.5)+(3) = 61.75 幻想点数。额外的 1.5 和 3 是因为 Pts、Ast 和 Reb 都是 10 或更大。

到目前为止,我拥有的计算字段:

([PTS])+([TRB]*1.25)+([AST]*1.5)+([STL]*2)+([BLK]*2)-([TOV]*.5)

但我不知道如何包含最后两个因素的 IF 语句。

【问题讨论】:

  • 每个 Ast 1.5 个幻想点 每个 Ast 2 个幻想点。你说 Ast 得 1.5 和 2 分

标签: sql ms-access calculated-columns


【解决方案1】:

这是一种令人讨厌的计算,但您可以这样做:

  [PTS]
+ [TRB] * 1.25
+ [AST] * 1.5
+ [STL] * 2
+ [BLK] * 2
- [TOV] * 0.5
+ iif(
    iif([PTS] >= 10, 1, 0)
  + iif([Reb] >= 10, 1, 0)
  + iif([AST] >= 10, 1, 0)
  + iif([Blk] >= 10, 1, 0)
  + iif([Stl] >= 10, 1, 0) = 2
  , 1.5
  , 0
  )
+ iif(
    iif([PTS] >= 10, 1, 0)
  + iif([Reb] >= 10, 1, 0)
  + iif([AST] >= 10, 1, 0)
  + iif([Blk] >= 10, 1, 0)
  + iif([Stl] >= 10, 1, 0) = 3
  , 3
  , 0
  )

即使用iif()将每个比较转换为01,然后将它们相加并与阈值进行比较。

【讨论】:

  • 除了 Reb 应该大于或等于这一事实之外,这确实起到了作用。谢谢!
猜你喜欢
  • 2021-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 1970-01-01
相关资源
最近更新 更多