我希望能够存储小数值,在一个柱,而在其他柱储存int表示备选办法(将解释):

  1. 应该基%
  2. 应该基本-绝对的
  3. 应该基+%
  4. 应该基+绝对的
  5. 1和2是一个折扣
  6. 3和4是一个upcharge
  7. 1&减少了3/提高金额的百分比(即量*量/价值)。
  8. 2&4减少/提高了量绝对(即额+/-数值)。

这意味着我有一个表3列:

  • BasePrice钱
  • AdditionalPrice小数
  • 选择指定列的值

  • ComputedColumn(小?)

让我们说,我们有一个行,这是BasePrice是100和AdditionalPrice是0.20

根据选项计算col应产生下面的价值:

  • 80
  • 99.80
  • 120
  • 100.20

我清楚了吗?是否有任何办法可以实现这一目标?

有帮助吗?

解决方案

我会保持的计算列作为金钱。

在内部,这将铸到小数,因为 数据类型的优先权

CREATE TABLE (
...,
ComputedColumn AS CAST (
    CASE Option
        WHEN 1 THEN BasePrice * (1 - AdditionalPrice)
        WHEN 2 THEN BasePrice - AdditionalPrice
        WHEN 3 THEN BasePrice * (1 + AdditionalPrice)
        WHEN 4 THEN BasePrice + AdditionalPrice
    END AS money)
)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top