繁体   English   中英

MS Access-为列中的每个唯一值选择一个随机记录

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM