使用IF访问计算字段

时间:2014-03-03 02:55:11

标签: sql ms-access calculated-columns

我有一张跟踪球员统计数据的表格:

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语句。

1 个答案:

答案 0 :(得分:2)

这是一种讨厌的计算,但这是你如何做到的:

  [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,然后将它们加在一起并与阈值数字进行比较。