2008-11-13 2 views

ответ

3

Это хорошо для литералов как 1.0, но если вы тянете данные из столбцов таблицы, необходимо, чтобы бросить/преобразовать первое оцененного числа в вашем уравнении:

convert(decimal, [col1])/([col2] + [col3]) 

-или-

convert(decimal(15, 2), [col1])/([col2] + [col3]) 
1

Я узнал от коллеги так же, как я разместил это.

Вам необходимо указать точность и масштаб по умолчанию.

Это работает в этом сценарии: объявить @tempDec десятичной (3,2)

Из MSDN:

десятичного [(р [, S])] и числовое [(р [, с])] Исправлена ​​точность и масштабные номера. Когда используется максимальная точность, допустимые значения составляют от -10^38 +1 до 10^38-1. Синонимы SQL-92 для десятичного числа - dec и dec (p, s). numeric функционально эквивалентен десятичной.

p (precision) Максимальное общее количество десятичных цифр, которое может быть сохранено как слева, так и справа от десятичной точки. Точность должна быть от 1 до максимальной точности 38. Точность по умолчанию равна 18.

s (шкала) Максимальное количество десятичных цифр, которое может храниться справа от десятичной точки. Масштаб должен быть значением от 0 до p. Масштаб может быть указан только в том случае, если задана точность. Шкала по умолчанию - 0; поэтому 0 < = s < = p. Максимальные размеры хранилища варьируются в зависимости от точности.

+0

То есть нулевая шкала в локальной переменной удаляет данные после точки хранения – gbn 2008-11-14 19:13:54