0

我希望能够在一个列中存储一个十进制值,并在另一列中存储一个表示选项的 int (将解释):

  1. 应该是基数-%
  2. 应该是 base -absolute
  3. 应该是基础 +%
  4. 应该是基础+绝对
  5. 1 & 2 是折扣
  6. 3 & 4 是附加费
  7. 1 & 3 按百分比减少/增加金额(即金额 * 金额/值)。
  8. 2 & 4 绝对减少/增加数量(即数量 +/- 值)。

意思是我有一个包含 3 列的表:

  • 基本价格货币
  • 附加价格小数
  • 选项 tinyint

  • ComputedColumn(十进制?)

假设我们有一排 BasePrice 是 100 而 AdditionalPrice 是 0.20

根据选项计算的 col 应该生成以下值:

  • 80
  • 99.80
  • 120
  • 100.20

我清楚了吗?有什么办法可以做到这一点?

4

1 回答 1

3

我也会将计算列保留为金钱。

在内部,由于数据类型优先级,这将转换为十进制

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)
)
于 2009-10-25T19:50:34.550 回答