Я хочу иметь SQL-вычисляемый столбец в соответствии с правилами

StackOverflow https://stackoverflow.com/questions/1621869

Вопрос

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

  1. должно быть базовым -%
  2. должно быть базово - абсолютным
  3. должно быть базовым +%
  4. должно быть базовым + абсолютным
  5. 1 и 2 - это скидка
  6. 3 и 4 - это повышенная плата
  7. 1 и 3 уменьшают / повышают сумму на процент (т.е.сумма * сумма/значение).
  8. 2 и 4 уменьшают / повышают сумму абсолютно (т.е.сумма +/- значение).

Это означает, что у меня есть таблица из 3 столбцов:

  • Деньги по базовой цене
  • Дополнительная цена десятичная
  • Опция tinyint

и

  • Вычисляемый столбец (десятичный?)

допустим, у нас есть строка, в которой базовая цена равна 100, а дополнительная - 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