我想知道是否有办法在执行前x%时将截断变为圆形。
例如:
Select Top 10 Percent
HospMastID
,ClientID
,ControlGroup = 1
Into
#RandomTable
From
#ClientsTable
Order By
NewID()
目前,当我总共有1176个原始记录时,它返回117作为前10%。只是好奇改变它的设置是什么。因为它实际上是截断原始数字而不是舍入它。
谢谢, 斯科特
答案 0 :(得分: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()