Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 从表中为每组代码选择n个随机行_Sql Server_Random - Fatal编程技术网

Sql server 从表中为每组代码选择n个随机行

Sql server 从表中为每组代码选择n个随机行,sql-server,random,Sql Server,Random,我有一张表格,里面有保险单或报价单上的客户详细信息。每一个都被分配了一个与营销活动相关的输出代码,每一个都会发生4次,每个“批次”只代表一个月中的一周。我需要在每个代码、每个批号(1-4)中随机选择25%的行,放入另一个表中,这样我就可以保留这些行,防止向客户推销 到目前为止,我在stack上看到的所有解决方案都说明了如何在初始CTE查询中使用行编号,然后从中进行选择,对于每个组的特定行数,我建议您查看NTILE以了解这一点。是的,谢谢!刚刚找到了一个使用它的解决方案,它工作得非常好。 ;WIT

我有一张表格,里面有保险单或报价单上的客户详细信息。每一个都被分配了一个与营销活动相关的输出代码,每一个都会发生4次,每个“批次”只代表一个月中的一周。我需要在每个代码、每个批号(1-4)中随机选择25%的行,放入另一个表中,这样我就可以保留这些行,防止向客户推销


到目前为止,我在stack上看到的所有解决方案都说明了如何在初始CTE查询中使用行编号,然后从中进行选择,对于每个组的特定行数,我建议您查看NTILE以了解这一点。

是的,谢谢!刚刚找到了一个使用它的解决方案,它工作得非常好。
;WITH AttributionOutput AS (
SELECT [Output Code], BatchNo, MonthandYear
FROM [dbo].[Direct_Marketing_UK]
WHERE MonthandYear = 'Sep2019'
And [Output Code] NOT IN ('HOMELIVE','HOMELIVENB','HOMENBLE')
GROUP BY [Output Code], BatchNo, MonthandYear
HAVING COUNT(*) >= 60
)

, CodeandBatch AS (
SELECT  dmuk.PK_ID,
    dmuk.MonthandYear,
    dmuk.PackNo,
    dmuk.BatchNo,
    dmuk.CustomerKey,
    dmuk.URN,
    dmuk.[Output Code],
    dmuk.[Quote/Renewal Date],
    dmuk.[Name],
    dmuk.[Title],
    dmuk.[Initial],
    dmuk.[Forename],
    dmuk.[Surname],
    dmuk.[Salutation],
    dmuk.[Address 1],
    dmuk.[Address 2],
    dmuk.[Address 3],
    dmuk.[Address 4],
    dmuk.[Address 5],
    dmuk.[Address 6],
    dmuk.[PostCode],
    ROW_NUMBER() OVER(PARTITION BY dmuk.[Output Code], dmuk.BatchNo ORDER BY newid()) as rn
FROM [dbo].[Direct_Marketing_UK] dmuk INNER JOIN
 AttributionOutput ao ON dmuk.[Output Code] = ao.[Output Code]
                            AND dmuk.BatchNo = ao.BatchNo
                            AND dmuk.MonthandYear = ao.MonthandYear
)

SELECT URN,
   [Output Code],
   [BatchNo]
FROM CodeandBatch
WHERE rn <=