[英]Query to Return N Random Concatenated Records
我接到了一项任务,我需要使用 Microsoft SQL 服务器从另一个表中返回与该公司关联的 3 个随机 email 地址的逗号分隔列,其中包含一个表中所有公司的列表。 到目前为止,我已经能够以随机顺序获得公司和所有相关的 email 地址,但我现在需要将此列表限制为 3 个。每家公司至少有 4 个相关的 email 地址,但可以想象有数百个。 这是我的 SQL 原样。
SELECT c.ID, c.companyName,
STRING_AGG(e.emailAddress, ', ') WITHIN GROUP (ORDER BY NEWID()) AS eMailAddress
FROM companies c
INNER JOIN email e ON e.companyID = c.ID
GROUP BY c.ID, c.companyName
我很感激对此的任何想法。
只需在以下位置CROSS APPLY
3 个 email 地址:
SELECT c.ID, c.companyName,
STRING_AGG(e.emailAddress, ', ') AS eMailAddress
FROM companies c
CROSS APPLY (
SELECT TOP 3 *
FROM email e
WHERE e.companyID = c.ID
ORDER BY NEWID()
) e
GROUP BY c.ID, c.companyName;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.