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

如何基于其他列值汇总表格?求实现指定决策汇总逻辑的Azure SQL查询语句

如何用Azure SQL实现决策表的聚合判断?

嘿,作为SQL新手碰到这种需要按分组做逻辑判断的需求很正常,我来一步步帮你解决这个问题!

先明确需求背景

原始决策表数据

Id decision
1 NULL
1 NULL
1 yes
1 NULL
2 no
2 no
2 no
3 yes
3 no
3 yes

期望输出结果

Id decision
1 Decision Pending
2 no
3 yes

核心规则

  • 规则1:如果某个Id对应的任意decision值是NULL,最终决策设为"Decision Pending"(比如Id 1)
  • 规则2:如果某个Id的decision没有NULL,且存在至少一个yes,最终决策设为"yes"(比如Id 3)
  • 规则3:如果某个Id的decision没有NULL,且所有值都是no,最终决策设为"no"(比如Id 2)

对应的Azure SQL查询语句

下面是完全符合需求的查询代码,记得把YourTableName替换成你实际的表名:

SELECT 
    Id,
    CASE
        -- 优先判断是否存在NULL(*规则1优先级最高*)
        WHEN COUNT(CASE WHEN decision IS NULL THEN 1 END) > 0 THEN 'Decision Pending'
        -- 再判断是否有yes(*规则2*,此时已排除有NULL的情况)
        WHEN COUNT(CASE WHEN decision = 'yes' THEN 1 END) > 0 THEN 'yes'
        -- 剩下的就是全no的情况(*规则3*)
        ELSE 'no'
    END AS decision
FROM 
    YourTableName
GROUP BY 
    Id;

代码逻辑拆解(帮新手理解)

  1. GROUP BY Id:把表中相同Id的行归为一组,这样我们就能针对每个单独的Id做判断。
  2. 第一个CASE WHEN:用嵌套的CASE配合COUNT,统计当前Id分组里decision为NULL的行数。如果数量大于0,说明该组存在NULL,直接返回Decision Pending(规则1优先级最高)。
  3. 第二个CASE WHEN:同样用COUNT统计当前分组里decision为yes的行数。能走到这一步说明该组已经没有NULL了,只要有至少一个yes,就返回yes(规则2)。
  4. ELSE 'no':前面两个条件都不满足的话,意味着该组既没有NULL,也没有yes,那所有值必然都是no,返回no即可(规则3)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:52:43