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

如何基于代码类型和日期分组统计?(SQL Server 2016)

解决方案

针对你的需求,以下是适用于SQL Server 2016的查询语句:

SELECT
    UPPER(CASE
        WHEN LEFT(code, 2) IN ('AB', 'AC', 'BB') THEN 'simple'
        WHEN LEFT(code, 2) IN ('DF', 'DD', 'AG', 'EF') THEN 'express'
    END) AS [类型(Type)],
    FORMAT(date, 'MM-yyyy') AS [年月(Month)],
    COUNT(*) AS [数量(Quantity)]
FROM
    你的表名
GROUP BY
    CASE
        WHEN LEFT(code, 2) IN ('AB', 'AC', 'BB') THEN 'simple'
        WHEN LEFT(code, 2) IN ('DF', 'DD', 'AG', 'EF') THEN 'express'
    END,
    FORMAT(date, 'MM-yyyy')
ORDER BY
    [年月(Month)],
    [类型(Type)] DESC;

关键部分说明:

  • 类型判断:用LEFT(code, 2)截取代码前两位,通过CASE WHEN匹配前缀规则,再用UPPER()将结果转为大写,匹配预期输出的格式。
  • 年月格式化:借助FORMAT(date, 'MM-yyyy')把日期转换为mm-yyyy格式(MM确保月份以两位数字显示,比如1月输出为01)。
  • 分组统计:按类型和格式化后的年月分组,用COUNT(*)统计每组的记录数量。
  • 排序:按年月升序、类型降序排序,让结果和你给出的预期输出顺序一致。

注意事项:

  • 请将语句中的你的表名替换为实际的表名称。
  • 如果date字段是字符串类型,需先转换为日期类型再格式化,例如使用CAST(date AS DATE)或CONVERT(DATE, date)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:17:08