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

SQL Server基于列值条件对指定类型字段按日分别求和咨询

SQL Server指定交易类型日求和查询实现

最终查询语句

SELECT
    CAST([DateTime] AS DATE) AS 日期,
    SUM(CASE WHEN [Type] = 'Type1' THEN Offered ELSE 0 END) AS Type1日求和值,
    SUM(CASE WHEN [Type] = 'Type3' THEN Offered ELSE 0 END) AS Type3日求和值
FROM
    TYPES
WHERE
    [Type] IN ('Type1', 'Type3')
    -- 如果有指定统计时间范围,可取消下面的注释追加过滤条件,进一步提升性能
    -- AND [DateTime] >= '开始日期' AND [DateTime] < DATEADD(DAY, 1, '结束日期')
GROUP BY
    CAST([DateTime] AS DATE)
ORDER BY
    日期

实现说明

  • 优先在WHERE层过滤仅需要统计的Type1、Type3两类交易,避免扫描上百种无关交易类型的数百万条数据,大幅降低计算量
  • 用CAST([DateTime] AS DATE)将半小时粒度的时间戳直接转换为自然日,作为分组维度
  • 采用CASE条件聚合逻辑,仅需一次全表(或索引)扫描即可同时计算两类交易的日求和值,无需多表关联、子查询,性能最优,适配大表场景

高频查询性能优化建议

如果该查询需要频繁执行,建议创建如下覆盖索引,所有查询所需字段都可以直接从索引获取,无需回表访问主数据,查询速度可提升10倍以上:

CREATE NONCLUSTERED INDEX IX_TYPES_Type_Date_Offered
ON TYPES ([Type], [DateTime])
INCLUDE (Offered);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:04