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

如何在SQL Server 12.0.4100.1中将行合并为列统计完成状态?

解决方案:用条件聚合合并行

当然可以实现!你需要用到条件聚合的技巧,把原本按complete分组产生的两行数据,合并成一行并分别统计完成和未完成的数量。

针对你的场景,complete是BIT类型,值为1(完成)或NULL(未完成),我们可以通过SUM()结合条件判断来分别统计两类数量:

SELECT 
    OrgLevel3, 
    OrgLevel4,
    SUM(CASE WHEN complete = 1 THEN 1 ELSE 0 END) AS '# Complete',
    SUM(CASE WHEN complete IS NULL THEN 1 ELSE 0 END) AS '# Incomplete'
FROM #reconcile
GROUP BY OrgLevel3, OrgLevel4
ORDER BY OrgLevel3, OrgLevel4;

解释一下关键部分:

  • 去掉了GROUP BY里的complete,因为我们不再需要按它分组,而是在聚合函数里区分统计
  • CASE WHEN complete = 1 THEN 1 ELSE 0 END:遇到完成的记录就返回1,否则返回0,用SUM()累加就得到完成的总数
  • CASE WHEN complete IS NULL THEN 1 ELSE 0 END:同理,统计未完成(值为NULL)的记录数

如果你习惯用更简洁的语法,SQL Server 2012及以上版本支持IIF()函数,上面的语句可以改写为:

SELECT 
    OrgLevel3, 
    OrgLevel4,
    SUM(IIF(complete = 1, 1, 0)) AS '# Complete',
    SUM(IIF(complete IS NULL, 1, 0)) AS '# Incomplete'
FROM #reconcile
GROUP BY OrgLevel3, OrgLevel4
ORDER BY OrgLevel3, OrgLevel4;

这两种写法效果完全一致,选你觉得更易读的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:41:36