Я хочу иметь SQL-вычисляемый столбец в соответствии с правилами
-
06-07-2019 - |
Вопрос
Я хочу иметь возможность хранить десятичное значение в одном столбце, а в другом столбце хранить значение int, представляющее параметр (будет объяснено):
- должно быть базовым -%
- должно быть базово - абсолютным
- должно быть базовым +%
- должно быть базовым + абсолютным
- 1 и 2 - это скидка
- 3 и 4 - это повышенная плата
- 1 и 3 уменьшают / повышают сумму на процент (т.е.сумма * сумма/значение).
- 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)
)
Не связан с StackOverflow