我使用的是T-SQL,需要一些随机行的样本输出。通常我会按照下面的写一些SQL
Select top 10 *
from SampleTable as ST
Order by NewID()
然而,这一次我想说是100行,但它们被另一个列值平均分割,例如column"Type"。100行,其中a型25行、B型25行,C型25行和D型25行。
我的"类型"值保存到临时表中
Select top 10 *
from SampleTable as ST
Inner Join #Types as TY
on TY.Type = ST.Type
Order by NewID()
我看过NTILE,但不确定它是否适用于我的问题。
谢谢。
将ROW_NUMBER
与NEWID()
:结合使用
WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY ST.Type ORDER BY NEWID()) rn
FROM SampleTable AS ST
INNER JOIN #TypesAS TY ON TY.Type = ST.Type
)
SELECT *
FROM cte
WHERE rn <= 25;
上述解决方案将随机返回每种类型的25条记录(或者更少的记录(。