Приведено в виде десятичной дроби

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