Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Трябва ли да изберете типовете данни MONEY или DECIMAL(x,y) в SQL Server?

Никога не трябва да използвате пари. Не е точно и е чист боклук; винаги използвайте десетични/числови.

Пуснете това, за да видите какво имам предвид:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на информация за колона от свързан сървър в SQL Server (T-SQL примери)

  2. Как мога да конвертирам bigint (UNIX timestamp) в datetime в SQL Server?

  3. Дефиницията на SSRS отчета е по-нова от сървъра

  4. Попълнете липсващите дати за изход на заявка на SQL Server с помощта на CTE

  5. Какво представляват данни и информация и обеми данни