如何select按供应商的销售记录百分比?
How to select a percentage of sales records by vendor?
我有 table 供应商和订单。我想 return 每个供应商的订单记录百分比。例如,如果我有 100 个订单并且 % 是 10,我想查看该供应商的随机 10 个订单记录。我正在使用 sql 服务器管理工作室。
是否有可能 return 所有这些结果作为一个 table?我一直在尝试使用 temp tables 来提取一些数据,但是遍历所有供应商都不起作用。
Vendors
ID %
1 10
2 20
3 10
4 50
Order
ID VID
10 1
11 1
32 2
44 3
43 3
基本上,您对每个供应商的最终查询是:
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
使其成为一个大查询。
我有 table 供应商和订单。我想 return 每个供应商的订单记录百分比。例如,如果我有 100 个订单并且 % 是 10,我想查看该供应商的随机 10 个订单记录。我正在使用 sql 服务器管理工作室。
是否有可能 return 所有这些结果作为一个 table?我一直在尝试使用 temp tables 来提取一些数据,但是遍历所有供应商都不起作用。
Vendors
ID %
1 10
2 20
3 10
4 50
Order
ID VID
10 1
11 1
32 2
44 3
43 3
基本上,您对每个供应商的最终查询是:
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
使其成为一个大查询。