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

如何实现Tasks表按RiskUniqueIdentificationNo单行汇总任务状态统计?

解决SQL行转列的分组统计需求

没问题,你的核心需求是把按Status分散的统计结果合并到每个RiskUniqueIdentificationNo的单行中,之前的查询之所以失败,是因为你在GROUP BY里还保留了[Status],导致每个编号会按状态拆分成多行。我们可以用条件聚合来实现这个效果:

正确的查询语句

SELECT 
    [RiskUniqueIdentificationNo],
    COUNT(*) AS TotalNoOfTasks,
    SUM(CASE WHEN [Status] = 'InProgress' THEN 1 ELSE 0 END) AS InProgressTask,
    SUM(CASE WHEN [Status] = 'Closed' THEN 1 ELSE 0 END) AS ClosedTask
FROM [dbo].[Tasks]
GROUP BY [RiskUniqueIdentificationNo]

语句解释

  • 只按RiskUniqueIdentificationNo分组,确保每个编号对应一行结果
  • COUNT(*)直接统计该编号下的总任务数
  • SUM(CASE...)是条件聚合的核心:对符合状态条件的行标记为1,不符合为0,求和后就是对应状态的任务数量

如果还需要统计你提到的逾期任务(Status != 'Closed'且EndDate < GETDATE()),可以直接在查询里添加对应的聚合项:

SELECT 
    [RiskUniqueIdentificationNo],
    COUNT(*) AS TotalNoOfTasks,
    SUM(CASE WHEN [Status] = 'InProgress' THEN 1 ELSE 0 END) AS InProgressTask,
    SUM(CASE WHEN [Status] = 'Closed' THEN 1 ELSE 0 END) AS ClosedTask,
    SUM(CASE WHEN [Status] != 'Closed' AND [EndDate] < GETDATE() THEN 1 ELSE 0 END) AS OverdueTasks
FROM [dbo].[Tasks]
GROUP BY [RiskUniqueIdentificationNo]

示例结果

RiskUniqueIdentificationNoTotalNoOfTasksInProgressTaskClosedTaskOverdueTasks
13210

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:01:55