我希望有一个SQL算列根据规则
-
06-07-2019 - |
题
我希望能够存储小数值,在一个柱,而在其他柱储存int表示备选办法(将解释):
- 应该基%
- 应该基本-绝对的
- 应该基+%
- 应该基+绝对的
- 1和2是一个折扣
- 3和4是一个upcharge
- 1&减少了3/提高金额的百分比(即量*量/价值)。
- 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)
)
不隶属于 StackOverflow