Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 根据另一个查询选择随机数据库行_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql server 根据另一个查询选择随机数据库行

Sql 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

对于内部控制,我们希望为多个发票类型和地区中的每一个选择一个随机发票

下面是获取一组不同发票类型和区域的SQL

  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;