Никогда не должны Вы использовать деньги. Это не точно, и это - чистый мусор; всегда используйте десятичный/числовой.
Выполнение это для наблюдения то, что я имею в виду:
DECLARE
@mon1 MONEY,
@mon2 MONEY,
@mon3 MONEY,
@mon4 MONEY,
@num1 DECIMAL(19,4),
@num2 DECIMAL(19,4),
@num3 DECIMAL(19,4),
@num4 DECIMAL(19,4)
SELECT
@mon1 = 100, @mon2 = 339, @mon3 = 10000,
@num1 = 100, @num2 = 339, @num3 = 10000
SET @mon4 = @mon1/@mon2*@mon3
SET @num4 = @num1/@num2*@num3
SELECT @mon4 AS moneyresult,
@num4 AS numericresult
Вывод: 2949.0000 2949.8525
некоторым людям, которые сказали, что Вы не делите деньги на деньги:
Вот один из моих запросов для вычисления корреляций и изменения, которое к деньгам дает неправильные результаты.
select t1.index_id,t2.index_id,(avg(t1.monret*t2.monret)
-(avg(t1.monret) * avg(t2.monret)))
/((sqrt(avg(square(t1.monret)) - square(avg(t1.monret))))
*(sqrt(avg(square(t2.monret)) - square(avg(t2.monret))))),
current_timestamp,@MaxDate
from Table1 t1 join Table1 t2 on t1.Date = traDate
group by t1.index_id,t2.index_id
Конечный результат не тот!
SQL Server не будет доверять уникальности FK, если она не проверена. Это означает, что при использовании столбца в запросе потребуется дополнительная обработка.
Короче говоря, вы должны заставить SQL Server проверить столбец, чтобы он считался надежным.
Что касается того, почему они отличаются от разных серверов, проверьте столбец isnottrusted в sys.foreign_keys. Это может повлиять на то, что генерирует SSMS?
Чтобы узнать больше, проверьте мой другой ответ , который относится к параметрам FK & NO CHECK / CHECK.
Да, это два разных сценария.
WITH CHECK проверяет существующие данные на соответствие новому ограничению.
WITH NOCHECK не проверяет существующие данные на соответствие новым ограничение. Это позволит вам иметь дочерние записи без соответствующего родителя.
РЕДАКТИРОВАТЬ: Что касается того, почему SSMS делает это, я понятия не имею
Оба являются серверами SQL Server 2005? Поскольку результат один и тот же, инструмент генерации кода может использовать разные процедуры, основанные на разных версиях продукта