我是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 %]
答案 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 %]
此外,如果您的列是整数,那么您将获得整数除法。