You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量执行SQL查询统计待合并VendorID的PO数量?

批量统计VendorID对应的PO订单数解决方案

方法一:修改SQL分组统计(最简便)

直接调整原SQL语句,按VendorID分组后一次性返回所有目标ID的PO数量,还能按数量降序排列,刚好匹配你按优先级合并的需求:

SELECT P.VendorID, COUNT(DISTINCT P.PONo) AS PO_Count
FROM scm.dbo.PODetailReport P
JOIN EGAA.dbo.users U ON U.ID = p.ORIGINATORUSERID
WHERE u.IsDisabled = 0
AND P.VendorID IN (
    50, 66674, -- 把158个VendorID全部列在这里,用逗号分隔
    -- 依次添加剩余的VendorID...
)
GROUP BY P.VendorID
ORDER BY PO_Count DESC;

执行后将结果复制到Excel,用XLOOKUP或VLOOKUP匹配到对应行即可快速填充空白字段,比如在Excel空白单元格输入:
=XLOOKUP(A2, $统计结果的VendorID列$, $统计结果的PO_Count列$, "")
下拉填充就能完成所有字段的批量填充。

方法二:直接读取Excel中的VendorID列表(无需手动列ID)

如果你的158个VendorID已经在Excel中,可以用OPENROWSET让SQL直接读取Excel数据,省去手动复制ID的麻烦:

SELECT P.VendorID, COUNT(DISTINCT P.PONo) AS PO_Count
FROM scm.dbo.PODetailReport P
JOIN EGAA.dbo.users U ON U.ID = p.ORIGINATORUSERID
-- 关联Excel中的VendorID列表
JOIN OPENROWSET(
    'Microsoft.ACE.OLEDB.12.0',
    'Excel 12.0 Xml;HDR=YES;Database=C:\你的Excel文件路径.xlsx',
    'SELECT VendorID FROM [Sheet1$]' -- 替换成你的Sheet名和列范围
) AS V ON P.VendorID = V.VendorID
WHERE u.IsDisabled = 0
GROUP BY P.VendorID
ORDER BY PO_Count DESC;

注意:使用该方法需要确保SQL Server开启了Ad Hoc Distributed Queries权限,且服务账户能访问指定的Excel文件路径。

关于你之前UNION ALL失败的原因

你之前用UNION ALL失败大概率是因为每个子查询只返回了计数,没有绑定对应的VendorID,导致无法对应到具体ID;同时要写158次子查询也极度冗余。即便语法正确(每个子查询带上VendorID),效率也远不如分组统计,完全不推荐这种方式。

内容的提问来源于stack exchange,提问作者Ebru AKTAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:55:32