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

如何用单条SQL语句获取含截至今日工作日总和的三列查询结果?

解决方法:在同一条SELECT语句中同时获取Planned与Overdue列

嘿,这事儿不难搞定!咱们只需要在原有的聚合逻辑里加个条件求和,就能把Overdue列也一并算出来啦。

核心思路很明确:Overdue列要统计的是**截至今日(即EndDate早于当前日期)**的WorkingDay总和,所以用CASE语句做个条件判断,符合逾期条件的记录才计入求和,不符合的就贡献0值,不会影响最终结果。

修改后的完整代码如下:

;With cte as ( 
    Select [Id] ,[Event_Id] ,[StartDate] ,[EndDate] ,[WorkingDay] 
    From BaseTable 
)
Select 
    Id, 
    SUM(WorkingDay) as Planned,  -- 原有的总计划工作日统计
    SUM(CASE WHEN EndDate < GETDATE() THEN WorkingDay ELSE 0 END) AS Overdue  -- 截至今日的逾期工作日总和
From cte 
Group By Id, Event_Id

小细节补充:

  • GETDATE()是SQL Server里获取当前日期时间的函数,如果用的是MySQL请换成CURDATE(),PostgreSQL则用CURRENT_DATE,根据你的数据库类型调整就行。
  • 整个逻辑不需要额外的子查询或表关联,直接在原有聚合层加条件求和,既简洁又高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:32:37