SELECT
RowID,BaseDeptID,BaseDeptName
FROM
(
select
RowID=ROW_NUMBER()
OVER(PARTITION BY Affair_instance.BaseDeptID ORDER BY
Affair_instance.BaseDeptID*RAND()),
Affair_instance.BaseDeptID,MAX(Affair_instance.BaseDeptName) AS
BaseDeptName
from Affair_instance
Where
Affair_instance.IsDeleted=0
GROUP BY
Affair_instance.BaseDeptID
) AS TMP
WHERE RowID<=50
ORder by
BaseDeptName,RowID
SELECT TOP 10 * FROM Affair_instance ORDER BY RAND()*CHECKSUM(NEWID())
原文:http://www.cnblogs.com/kenzhang/p/3607832.html