Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 在最高百分比中舍入与截断_Sql Server 2008_Percentile - Fatal编程技术网

Sql server 2008 在最高百分比中舍入与截断

Sql server 2008 在最高百分比中舍入与截断,sql-server-2008,percentile,Sql Server 2008,Percentile,我想知道在做x%的时候,是否有一种方法可以将截断改为圆形 例如: Select Top 10 Percent HospMastID ,ClientID ,ControlGroup = 1 Into #RandomTable From #ClientsTable Order By NewID() 目前,当我总共有1176条原始记录时,它返回117条作为前10%。我只是想知道改变这一点的背景是什么。因为它实际上是截断原

我想知道在做x%的时候,是否有一种方法可以将截断改为圆形

例如:

Select Top 10 Percent
    HospMastID
        ,ClientID
    ,ControlGroup = 1
    Into
    #RandomTable
    From
    #ClientsTable
    Order By
    NewID()
目前,当我总共有1176条原始记录时,它返回117条作为前10%。我只是想知道改变这一点的背景是什么。因为它实际上是截断原始数字,而不是四舍五入

谢谢,
Scott

如果您想对结果进行
取整,您可以计算自己的值以在
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()