为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
求助,附件中的sql执行COUNT是137条,只执行count里边的sql只能查到103条,是那块影响了count函数呢?
sql:sql(1).txt
count(0) ,结果为137:
select * ,结果集为103行:
做个试验,把外层条件 DWBH = '113120' 移入内层两个查询里,然后看看结果集记录数与COUNT值是否一致了
类似于

COUNT(0) 统计内层联合查询的所有行,可能含重复 WBSID;SELECT * 在外层过滤 rn=1后,每个 WBSID只保留一条,去除了重复。
执行sql查一下是否有重复:
SELECT WBSID, COUNT(*) AS cnt FROM ( -- 内层联合查询(去掉ROW_NUMBER和rn过滤) SELECT ... FROM ... UNION ALL SELECT ... FROM ... ) B WHERE DWBH = '113120' GROUP BY WBSID HAVING COUNT(*) > 1;原因应该是存在重复的WBSID,导致COUNT(0)与 SELECT * 结果不一致,如果业务允许,可以试试在内层查询中按 WBSID去重,避免 UNION ALL引入重复。