Sql server 根据另一个查询选择随机数据库行
对于内部控制,我们希望为多个发票类型和地区中的每一个选择一个随机发票 下面是获取一组不同发票类型和区域的SQLSql server 根据另一个查询选择随机数据库行,sql-server,sql-server-2005,Sql Server,Sql Server 2005,对于内部控制,我们希望为多个发票类型和地区中的每一个选择一个随机发票 下面是获取一组不同发票类型和区域的SQL select InvoiceType,RegionID from Invoices group by InvoiceType, RegionID 对于返回的每一行,我需要获取一个带有InvoiceType和RegionID的随机行。这就是我获取随机行的方式: SELECT top 1 CustomerID ,InvoiceNum ,Name FR
select InvoiceType,RegionID
from Invoices
group by InvoiceType, RegionID
对于返回的每一行,我需要获取一个带有InvoiceType
和RegionID
的随机行。这就是我获取随机行的方式:
SELECT top 1
CustomerID
,InvoiceNum
,Name
FROM Invoices
JOIN Customers on Customers.CustomerID=Invoices.CustomerID
where InvoiceType=X and RegionID=Y
ORDER BY NEWID
但是我不知道如何运行第一条语句返回的select语句
foreach()
行。我可以用编程的方式完成,但我更喜欢只使用存储过程的选项,因为这个查询不需要程序。太好了!我认为CTEs可能是解决方案,但我以前从未使用过。
WITH cteInvoices AS (
SELECT CustomerID, InvoiceNum, Name,
ROW_NUMBER() OVER(PARTITION BY InvoiceType, RegionID ORDER BY NEWID()) AS RowNum
FROM Invoices
)
SELECT c.CustomerID, c.InvoiceNum, c.Name
FROM cteInvoices c
WHERE c.RowNum = 1;