I have a calculated field 'MySum' in inner query whose value after calculation is 58.
I need to get 20% of this value.
If I give:
MySum * 20 /100, I get 11
If I give:
((20 * CAST(MySum as decimal(6,2)))/100) , I get 11.60000
If I give
Round(((20 * CAST(MySum as decimal(6,2)))/100), 2), I still get 11.60000
I want that,
If result comes 11.6, it should display 12 and if result is 11.4, it should display 11.
I want to Rounded off values. Any function for that ?
This question is related to
sql
sql-server-2008
decimal
CAST(Round(MySum * 20.0 /100, 0) AS INT)
FYI
MySum * 20 /100, I get 11
This is because when all 3 operands are INTs, SQL Server will do perform integer maths, from left to right, truncating all intermediate results.
58 * 20 / 100 => 1160 / 100 => 11 (truncated from 11.6)
Also for the record ROUND(m,n) returns the result to n decimal places, not n significant figures.
SELECT CONVERT(INT, 11.4)
RESULT: 11
SELECT CONVERT(INT, 11.6)
RESULT: 11
check the round function and how does the length
argument works. It controls the behaviour of the precision of the result
Source: Stackoverflow.com