我有一个表SCCalls
,其中有一列Call_CalT_Code
。 Call_CalT_Code
可以是几个不同值之一。它还有一个Call_InDate
列,我将过滤它。
我需要总共获得1000条随机记录(按Call_InDate
过滤),每个Call_CalT_Code
分配相同的数字。
我该怎么做?
编辑(gbn):解决方案必须处理SQL Server 2005上兼容模式80的数据库
答案 0 :(得分:2)
您可能需要使用分部中的数字。
如果您有9个值,则1000/9 = 111,这样您只能获得999行。所以我使用了1100和之后的TOP 1000.
SELECT TOP 1000
*
FROM
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY Call_CalT_Code ORDER BY NEWID()) AS rn
FROM
MyTable
) foo
WHERE
rn <= 1100 / (SELECT COUNT(distinct Call_CalT_Code) FROM MyTable)
ORDER BY
rn