Я хочу иметь вычисляемый столбец SQL в соответствии с правилами - PullRequest
0 голосов
/ 25 октября 2009

Я хочу иметь возможность хранить десятичное значение в одном столбце, а в другом столбце - int, представляющий параметр (поясню):

  1. должно быть основанием -%
  2. должен быть базовым-абсолютным
  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

Я чист? Есть ли способ, которым я могу достичь этого?

1 Ответ

3 голосов
/ 25 октября 2009

Я бы тоже оставил вычисляемый столбец как деньги.

Внутренне, это будет приведено к десятичному из-за Тип данных Приоритет

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)
)
...