列中每个唯一结果的SQL Server随机行

时间:2015-09-29 21:13:00

标签: sql-server tsql

我有一个包含多个同事姓名及其销售交易的表格。在一天结束时,一位同事可能有100条销售记录,我需要为每位同事随机选择一条

例如,如果当天有100名同事工作,结果将为每位同事提供1个随机记录,总共返回100个

我查看了newid()但无法弄清楚如何为每位同事返回1条记录

2 个答案:

答案 0 :(得分:3)

您可以尝试这样的事情:

WITH summary AS (
    SELECT o.id, 
           o.client, 
           o.ammount, 
           ROW_NUMBER() OVER(PARTITION BY o.id
                                 ORDER BY NEWID()) AS rn
      FROM orders o)
SELECT s.*
  FROM summary s
WHERE s.rn = 1

答案 1 :(得分:0)

我们假设你的表名为Sale,它有一列Salesman_ID,然后你可以写:

SELECT * 
  FROM Sale
 WHERE Salesman_ID = (SELECT TOP 1 Salesman_ID 
                        FROM Sale Sale2 
                       WHERE Sale2.Salesman_ID = Sale.Salesman_ID 
                       ORDER BY NEWID())

对于每个唯一Salesman_ID,您只能从与Salesman_ID对应的行组中获得一个随机行。