2011-07-11 71 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