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

SQL SELECT实现type列行转列 按日期分组统计各类型数量

单SELECT实现按类型转置计数的行转列方案

核心实现方式为条件聚合,无需依赖数据库特定的PIVOT函数,纯SELECT语句即可完成需求。

映射规则说明

  • type=1 统计结果输出到SMS列
  • type=2 统计结果输出到Email列
  • type=3 统计结果输出到Online列
  • 分组维度:date字段按%y-%m-%d格式格式化后的日期值

可直接运行的SQL代码

注意将代码中的your_test_table替换为你实际的表名:

SELECT
    DATE_FORMAT(`date`, '%y-%m-%d') AS stat_date,
    SUM(CASE WHEN `type` = 1 THEN 1 ELSE 0 END) AS SMS,
    SUM(CASE WHEN `type` = 2 THEN 1 ELSE 0 END) AS Email,
    SUM(CASE WHEN `type` = 3 THEN 1 ELSE 0 END) AS Online
FROM your_test_table
GROUP BY stat_date;

写法说明

计数逻辑也可替换为COUNT写法:COUNT(CASE WHEN type = 1 THEN id END) AS SMS,逻辑等价。原理是不满足条件时CASE返回NULL,COUNT函数会自动忽略NULL值,统计结果和SUM写法完全一致。

示例数据返回结果

针对给出的2022/06/01共6条测试数据(type=1、2、3各2条),查询返回结果如下:

stat_dateSMSEmailOnline
22-06-01222

注意事项

  • 如果date字段是以字符串格式存储的2022/06/01格式值,需要先做日期格式转换,将SELECT子句中的日期格式化部分替换为DATE_FORMAT(STR_TO_DATE(date, '%Y/%m/%d'), '%y-%m-%d') AS stat_date即可
  • 如果需要4位年份的日期格式,将格式化字符串中的%y替换为%Y即可,输出结果会变为2022-06-01
  • 该写法兼容MySQL、PostgreSQL、SQL Server等绝大多数支持SQL标准的数据库,通用性强于各数据库专属的PIVOT语法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:21:54