SQL Cast from int to decimal
Write it like this:
SELECT CAST(CAST(Total As float) / TotalAnswers * 100 As decimal(8, 2))
DECIMAL(2)
is a decimal of 2 digits before and no digits after the decimal point. That doesn't allow you to have digits after the decimal point!
The DECIMAL(p,s)
specification defines the number of total digits (p
) and the number of digits after the decimal point (s
) (where s
cannot be larger than p
and is 0 if ommitted).
You need to use something like DECIMAL(4,2)
(4 digit total - 2 of which after the decimal point; so therefore: also 2 before the decimal point) or something like that - some digits before and some after the decimal point - then you'll see your desired result!
For details on the DECIMAL
type and its syntax, consult the MSDN Books Online topic on decimal and numeric
There are actual a couple of parameters..
(p, s)
where
- p represents the "precision" - the total number of digits before and after the decimal point.
- s represents the "scale" - the number of digits after the decimal point.
By only giving 1 parameter, you are giving the precision only.
See MDSN.