Ant*_* P. 3 sql t-sql sql-server
我们为每个客户审核10%的文件,并需要创建一个SQL脚本.我可以使用WHERE语句为每个客户端创建一个查询.但是,我需要为每个客户端运行它.如果我手动完成,我需要为每个客户端运行它.有没有办法在脚本中查询每个客户端的10%?
SELECT TOP 10 PERCENT b.loan_no
来自借款人b JOIN客户c ON b.clients_id = c.clients_id WHERE b.funded> = '04/01/2011'AND c.dba IN'ABC COMPANY'ODER BY NEWID()
样品使用master..spt_values- 调整到您的桌子
select a.*
from
(
select *,
rn=ROW_NUMBER() over (partition by type order by newid()),
COUNT(*) over (partition by type) countPerType
from master..spt_values
) a
where rn <= ceiling(countPerType*10.0/100)
Run Code Online (Sandbox Code Playgroud)
基本机制是计算一个窗口中每个分区(客户端)有多少行,另一个是每个分区中的row_number,并且只抓取生成的行编号在所需的10%范围内.使用CEILING,如果您的样本为2,则10%为0.2,将其舍入为1,因此您总是以> = 10%的记录结束.