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

SQL Server分组查询如何筛选拥有多文档且包含指定类型文档的人员

你只需要在原有HAVING条件的基础上,新增一个条件聚合判断是否存在DocumentType=10的记录即可。另外注意原有SQL的SELECT子句里的DocumentType不符合GROUP BY规范,大多数数据库会执行报错,如果你只需要符合条件的人员名单,只保留Name字段即可。

修改后的完整SQL如下:

SELECT Name FROM 
(
    SELECT Name, DocumentType FROM SomeTable
      UNION
    SELECT Name, DocumentType FROM SomeOtherTable
      UNION
    SELECT Name, DocumentType FROM YetAnotherTable
) AS AllUserDocument
GROUP BY Name
HAVING 
  -- 满足条件1:文档类型数量大于1,UNION已自动去重,COUNT(*)直接对应不同类型的数量
  COUNT(*) > 1
  -- 满足条件2:存在类型为10的文档
  AND SUM(CASE WHEN DocumentType = 10 THEN 1 ELSE 0 END) >= 1

补充说明:

  • 如果你要统计的是总文档份数大于1(允许同类型多份文档),请把子查询中的UNION替换为UNION ALL,避免UNION的去重特性导致计数偏小。
  • 如果你使用的是支持布尔值聚合的数据库(如MySQL、PostgreSQL),条件2也可以简化写成AND MAX(DocumentType = 10) = 1,执行效果完全一致。
  • 如果你确实需要返回对应人员的所有DocumentType,可以在外层嵌套查询关联子查询结果获取,或者用GROUP_CONCAT之类的聚合函数返回类型列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 04:06:08