#c# #sql-server
#c# #sql-сервер
Вопрос:
tablesAA
имеет два столбца, amount
есть decimal (28,10)
, amountscale
есть int
.
Мне нужно произнести amount
decimal [ (p[ ,s] )]
команду » кому » .
Буква «s» является динамической по значению amountscale
столбца, но нижний код вызывает синтаксическую ошибку.
Итак, как выполнить приведение amount
в зависимости от amountscale
значения?
select
amount, amountscale,
cast(amount as decimal(28, amountscanle)) as amount
from tablesAA
Комментарии:
1. Почему вы хотите преобразовать целое число в десятичное число на уровне базы данных?
Ответ №1:
Увы, для a cast()
масштаб и точность должны быть постоянными.
Если вам просто нужны выходные данные с определенным масштабом и точностью, вы можете преобразовать их в строку с помощью str()
(описано здесь):
select amount, amountscanle,
str(amount, 28, amountscanle) as amount2
from tablesAA;
Альтернативой является подход грубой силы:
select amount, amountscanle,
(case when amountscanle = 0 then cast(amount as decimal(28, 0)
when amountscanle = 1 then cast(amount as decimal(28, 1)
when amountscanle = 2 then cast(amount as decimal(28, 2)
. . .
end) as amount2
from tablesAA;