2014-04-23 71 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()