我有一个包含多个同事姓名及其销售交易的表格。在一天结束时,一位同事可能有100条销售记录,我需要为每位同事随机选择一条
例如,如果当天有100名同事工作,结果将为每位同事提供1个随机记录,总共返回100个
我查看了newid()但无法弄清楚如何为每位同事返回1条记录
答案 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
对应的行组中获得一个随机行。