2011-07-11 44 views
1

我有一个表,SCCalls,它有一列Call_CalT_CodeCall_CalT_Code可以是几个不同值之一。它还有一个列Call_InDate,我将过滤。获取随机选择的行数每个分组的编号

我需要总共获得1000个随机记录(通过Call_InDate过滤),每个记录要分配相同数量的每个Call_CalT_Code

我该怎么做?

编辑(GBN):解决方案必须是SQL Server 2005中

+0

SQL Server 2000更复杂。您确定标签正确吗?这是“每Call_CalT_Code 1000”还是“总共1000”。目前还不清楚..和这两个请求是相互排斥的... – gbn

+0

是的,数据是在2000年。它被复制到2005服务器上,但它运行在2000兼容模式(我知道!)。 –

+0

@gbn,它的总数为1000,可以自由编辑以使其更清晰,不确定我可以如何。 –

回答

2

您可能需要玩弄在分裂的数字兼容模式80数据库上运行。

如果你有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