SQL等效于C#中的Math.Floor()

Nit*_*esh 2 sql sql-server sql-server-2008

我只想10.111根据以下Query中的某些条件转换为10

Select 
    case when 2=1 then
        CONVERT(decimal(10,3), 10.111)
    else
        CONVERT(decimal(10,0), 10.111)
    end
Run Code Online (Sandbox Code Playgroud)

但它返回10.000我怎么能得到10?

Mar*_*ith 8

CASE整个表达式都必须计算为相同的数据类型.让一个分支评估到另一个分支decimal(10,3)到另一个数据类型的唯一方法是进行强制转换sql_variant

Select 
    case when 2=1 then
        CONVERT(decimal(10,3), 10.111)
    else
        CAST(FLOOR( 10.111) AS SQL_VARIANT)
    end
Run Code Online (Sandbox Code Playgroud)