我有供应商和订单的表格。我想返回每个供应商的订单记录百分比。例如,如果我有100个订单且%是10,我想看到该供应商的随机10个订单记录。我正在使用sql server mgmt studio。
甚至可以将所有这些结果作为一个表返回吗?我一直在尝试使用临时表来提取一些数据但是通过所有供应商都无法正常工作。
Vendors
ID %
1 10
2 20
3 10
4 50
Order
ID VID
10 1
11 1
32 2
44 3
43 3
答案 0 :(得分:0)
基本上,您对每个供应商的最终查询是:
SELECT TOP N * FROM [Order] WHERE VID = <yourVendorID> ORDER BY RAND()`
但麻烦的是在一次查询中即时查明N
。我们可以使用以下网址获取N
:
SELECT Round(COUNT(*)/Vendor.percentfield, 0) as [N], Vendor.ID as yourVendorID
FROM Order JOIN Vendors ON Order.VID = Vendor.ID
GROUP BY Vendor.percentField, Vendor.Id
鉴于此,我认为您最好的选择是在存储过程中执行此操作,以便您可以在上面的第二个查询中循环遍历结果集并动态构建第一个查询。您可以在每个动态创建的SELECT语句之间使用UNION
将其转换为一个大查询。