SQL中具有条件的ROUNDUP函数

时间:2018-07-06 04:32:51

标签: sql sql-server

我对EXCEL列有一个DAX公式,名称为ED2

FORMULA:

=IF ( [ED1] - INT ( [ED1] ) > 0.5, ROUNDUP ( [ED1], 0 ), INT ( [ED1] ) )

因此,如果ED1列的值大于0.5,则应四舍五入,否则四舍五入

示例:

  

enter image description here

2 个答案:

答案 0 :(得分:1)

DECLARE @ED float = 3.5;
Select case when @ED - FLOOR(@ED) > 0.5 THEN CEILING(@ED) ELSE FLOOR(@ED) END;

请注意,这对于负数可能无法正常工作

答案 1 :(得分:0)

您可以使用 Round 函数来实现。

SELECT Round(ED1,0) AS Rounded;

以下是圆形函数详细信息的链接:msdn link

更新

正如评论中提到的那样,在某些情况下这是行不通的。您可以使用以下代码:

Select IIF((ED1%1)>0.5,Ceiling(ED1),Floor(ED1)) As Rounded

您的案例代码:

DECLARE @tbl TABLE(ED1 DECIMAL(8,2));
INSERT INTO @tbl VALUES
(1),(1.25),(1.5),(1.75),
(2),(2.25),(2.5),(2.75),
(3),(3.25),(3.5),(3.75),
(4);
SELECT ED1,ED2=IIF(ED1%1>0.5,CEILING(ED1),FLOOR(ED1)) FROM @tbl

,输出为:

output result