2015-06-09 43 views
0

我有問題,我不能修正錯誤與標量值函數。 我有一個功能:如何整數中值

(@list varchar(max)) 
returns float 
as 
begin 

    declare @Median float 
    select @Median = (
    convert(float,(SELECT MAX(value) FROM 
    (SELECT TOP 50 PERCENT value from split(@list,',') order by value) BottomHalf)) 
    + 
    convert(float,(SELECT MIN(value) FROM 
    (SELECT TOP 50 PERCENT value from split(@list,',') order by value DESC) TopHalf)) 
    )/2 
    option (maxrecursion 0) 

    return (ROUND (@Median ,2)) 

end 

在響應中,我得到例如:1.155。 當我添加返回(ROUND (1.155 ,2)) 我得到1.15,但我需要1.16。我嘗試添加ROUND(CAST (1.155 AS float),2)但它對我沒有幫助

+0

要清楚這個'選擇圓(1.155.2)'給你'1.15'?再次檢查 –

+0

是的,結果我有1.15但需要1.166 – Yura

+0

你可以試試這個嗎? 'select ROUND(1.155,2,0)' –

回答

2

推測,您的返回值更像是1.154999999。這將會下降。如果您需要仍然得到1.16,然後嘗試宣告@median有三個小數位:

declare @median decimal(18, 3) 

我懷疑這是否是你真正需要的。但here是一個SQL小提琴。

+0

謝謝,你的答案幫助了我。 – Yura