SQL使用Floor向下取整

时间:2019-01-11 15:06:03

标签: sql sql-server

我是SQL的新手,试图使用Floor函数进行四舍五入,但是我收到一条消息,说该函数需要1个参数。我没有看到这个问题,可能是我很想念的很简单的事情。任何帮助将不胜感激。

,(Floor( 
        CASE 
            WHEN ret2 <> 0 OR originalretail <> 0 
                THEN CASE 
                        WHEN ret2 > 0 
                            THEN (ret2-retone)/ret2 
                        WHEN originalretail > 0 
                            THEN (originalretail-retone)/originalretail 
                        ELSE NULL 
                      END 
        END 
        ,2) * 100 AS [Savings %]

1 个答案:

答案 0 :(得分:3)

  

我将“回合”换为“地板”,因为这可行,但如果我将“回合”切换为   地板功能我得到了错误。我将更新代码

因为floor接受了1个参数,并且您要传入2个嵌套的大小写和数字2,所以您在开头也有一个流氓的开放括号...

,(round(
        --First Argument  
        CASE 
            WHEN ret2 <> 0 OR originalretail <> 0 
                THEN CASE 
                        WHEN ret2 > 0 
                            THEN (ret2-retone)/ret2 
                        WHEN originalretail > 0 
                            THEN (originalretail-retone)/originalretail 
                        ELSE NULL 
                      END 
        END
        --second...
        ,2) * 100 AS [Savings %]

要解决此问题,请删除逗号和2以及前导括号。

,floor( 
        CASE 
            WHEN ret2 <> 0 OR originalretail <> 0 
                THEN CASE 
                        WHEN ret2 > 0 
                            THEN (ret2-retone)/ret2 
                        WHEN originalretail > 0 
                            THEN (originalretail-retone)/originalretail 
                        ELSE NULL 
                      END 
        END 
        ) * 100 AS [Savings %]

此外,如果您的列是整数,那么您将获得整数除法。