[英]MS Access - select one random record for each unique value in a column
我有一张来自40个不同供应商的3,000张发票的表格。 在MS Access 2013中,我如何从40个供应商中随机选择一个记录?
这是我尝试过的代码,但是就像我说的那样,它不会区分供应商代码,并且可以给我40个来自一个供应商的结果:
SELECT TOP 40 Vendors.Field1, Vendors.Vendor, Vendors.[Lgl Name], Vendors.[Pymnt Amt] INTO [Random Vendors]
FROM Vendors ORDER BY Rnd(Field1);
此Office支持网站提供了一个公式: Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
。
您可以尝试类似:
SELECT Vendors.Field1,
Vendors.Vendor,
Vendors.[Lgl Name],
Vendors.[Pymnt Amt]
INTO [Random Vendors]
FROM Vendors
WHERE Vendors.Field1 IN (Int(3000*Rnd(Field1)))
GROUP BY Vendors.Vendor;
假设Field1是发票编号。 如果不是这种情况,则必须JOIN
发票表。
让我假设表被称为invoices
,你有一个表叫做vendors
,每个供应商的一行:
select v.*
(select top 1 i.invoiceid
from invoices as i
where i.vendor = v.vendor
order by rnd(i.invoiceid)
) as random_invoiceid
from vendors as v;
如果您需要发票的详细信息,则可以将其用作子查询:
select i.*
from (select v.*
(select top 1 i.invoiceid
from invoices as i
where i.vendor = v.vendor
order by rnd(i.invoiceid)
) as random_invoiceid
from vendors as v
) as vi join
invoices as i
on i.invoiceid = vi.random_invoiceid;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.