SQL Server: round decimal number and convert to int (within Select)

int, rounding, select, sql, sql-server

Solution

You can use `ROUND` function to round the value to integer:

ROUND(INT, 100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END), 0) AS matchPercent

This will retain the type, e.g rounded `float` will stay `float`. If you also need to return `int` data type (or other integer data types), you need to also convert it:

CONVERT(INT, ROUND(INT, 100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END), 0)) AS matchPercent

Problem

I am using the following line within a Select which returns a number with decimals, e.g. 33.33333. How can I round this within the Select and convert to integers so that I don't have decimals, e.g. in the above example it should return 33 ? ``` 100 * AVG(CASE WHEN col2 = col3 THEN 1.0 ELSE 0.0 END) AS matchPercent ```

Original source