sql >> Database teknologi >  >> RDS >> Sqlserver

Skal du vælge datatyperne PENGE eller DECIMAL(x,y) i SQL Server?

Aldrig nogensinde bør du bruge penge. Det er ikke præcist, og det er rent skrald; brug altid decimal/numerisk.

Kør dette for at se, hvad jeg mener:

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

Output:2949.0000 2949.8525

Til nogle af de mennesker, der sagde, at man ikke deler penge med penge:

Her er en af ​​mine forespørgsler til at beregne korrelationer, og at ændre det til penge giver forkerte resultater.

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. Hvordan man tvinger evaluering af underforespørgsel, før man tilslutter sig/skubber ned til en fremmed server

  2. Sådan opretter du forbindelse til Oracle 11-databasen fra . net

  3. Rekonstruer Standby DB

  4. automatisere rollback script oracle