2014-04-23 44 views
0

我想知道是否有一种方法可以在执行顶级x百分比时将截断更改为圆形。Round vs truncate in top percent

例如:

Select Top 10 Percent 
    HospMastID 
     ,ClientID 
    ,ControlGroup = 1 
    Into 
    #RandomTable 
    From 
    #ClientsTable 
    Order By 
    NewID() 

目前当我有一个总的返回117的前10%1176个原始记录。只是好奇这个设置会改变这个。因为它确实截断了原始数字而不是四舍五入。

感谢, 斯科特

回答

1

如果你想ROUND的结果,可以计算出自己的价值TOP(授权使用,这意味着你首先需要计算你的表中的行,但它的只有这样我才能想到做到这一点,因为没有这个设置):

DECLARE @TopPercent INT, @Top INT 
SET @TopPercent = 10 -- use the value you want here 

SELECT @Top = ROUND(COUNT(*)*CAST(@TopPercent AS DECIMAL(4,1))/100,0) 
FROM #ClientsTable 

SELECT TOP(@Top) 
     HospMastID, 
     ClientID, 
     ControlGroup = 1 
INTO #RandomTable 
FROM #ClientsTable 
ORDER BY NEWID()