#sql #sql-server #casting #decimal #variable-length
Вопрос:
У меня есть 4 значения в столбце. Например;
ColumnA
2.651
3.5
4.55
7.9
И я хочу суммировать все это и представить в виде десятичной дроби;
select CAST(sum(ColumnA) as Decimal(LEN(sum(ColumnA)),2)) FROM tablename;
однако я получаю эту ошибку:
Msg 102, Level 15, State 1, Server dbrank-tsql, Line 7
Incorrect syntax near '('.
Когда я просто запускаю select len(сумма(столбец)), которая равна 5, и набираю ее в;
select CAST(sum(ColumnA) as Decimal(5,2)) FROM tablename;
это работает. Но я не всегда могу сначала найти длину этого числа, а затем ввести его для приведения.
Как я могу решить эту проблему?
Комментарии:
1. Где твой
SELECT
?decimal
не допускает выражения для его точности или масштаба, оно должно быть буквальным. У вас также больше левой паратезы ((
), чем правой скобки ()
).2. хорошо,может быть, мне следует ввести его таким образом, выберите ПРИВЕДЕНИЕ(сумма(столбец) в десятичном виде(LEN(сумма(столбец)), 2) ИЗ имени таблицы;
3. Нет, это не сработает, опять же, точность и масштаб должны быть буквальными.
LEN(sum(ColumnA))
это не буквально.4. @Larnu 18 600 означает 18.600 в каком-то другом языке 🙂 ОП, по — видимому, смущен значением и представлением чисел-он хочет удалить конечные нули из десятичной части. В любом случае, это не задача для SQL.
5. В вашем слое презентации вы устанавливаете, как
decimal
будет отображаться. Если вам действительно нужно сделать это в SQL, вы можете сделатьFORMAT(value, '0.#####')