ROUND関数は数値を四捨五入する関数ですが、MS SQLとOracleでは若干使い方が違います。OracleではROUND関数の引数に指定した数値を四捨五入しますが、MS SQLの場合は四捨五入するか切り捨てるかの指定を行う必要があります。つまり、MS SQLの場合はROUND関数はOracleのTRUNC関数と同じ機能を持つことになります。
文法:
ROUND(value, d [, type] ) SQL Server
ROUND(value [, d] ) Oracle
SQL Serverの場合、typeに従ってvalueの値をdで指定した小数点以下の桁数で四捨五入もしくは切り捨てる。typeに0以外の数値を指定すると、ROUND関数は切り捨てした値を返す。
Oracleの場合、dで指定した小数点以下の桁数で四捨五入する。
使用例:テストの平均点を四捨五入する。(SQL Server)
SELECT score, ROUND(score, 0) FROM tbScoreTable;
score ROUND(score, 0)
———————————————–
40.323 40.000
63.678 64.000
89.835 90.000
使用例:テストの平均点を小数点2桁まで残して四捨五入する。(Oracle)
SELECT score, ROUND(score, 2) FROM tbScoreTable;
score ROUND(score, 2)
———————————————-
40.323 40.320
63.678 63.680
89.835 89.840
使用例:テストの平均点を小数点1ケタを残して切り捨てる(SQL Server)
SELECT score, ROUND(score, 1, 1) FROM tbScoreTable;
score ROUND(score, 1, 1)
———————————————
40.323 40.300
63.678 63.600
89.835 89.800