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

如何转置查询结果行列?实现年度销售数据对比的列展示

解决方案:用条件聚合实现行转列

没问题,你可以用条件聚合的方式把行式结果转换成需要的列式对比——直接在SELECT语句里分别计算上年(PY)和本年(CY)的销售总和,同时固定KPI字段的内容。

修改后的查询语句

SELECT 
  'sales_volume' AS KPI,
  SUM(CASE WHEN sales_date BETWEEN '2019-03-16' AND '2019-03-18' THEN sales_volume ELSE 0 END) AS PY,
  SUM(CASE WHEN sales_date BETWEEN '2020-03-16' AND '2020-03-18' THEN sales_volume ELSE 0 END) AS CY
FROM sales
WHERE 
  (sales_date BETWEEN '2019-03-16' AND '2019-03-18') 
  OR 
  (sales_date BETWEEN '2020-03-16' AND '2020-03-18');

核心逻辑说明

  • 'sales_volume' AS KPI:直接固定这一列的内容为你需要的指标名称
  • SUM(CASE ...):对每个时间区间的销量做条件求和,不在目标区间内的记录贡献0,最终得到对应年份的总销量
  • WHERE子句:过滤掉无关日期,提升查询效率(也可以省略,但保留会让计算更高效)

执行后得到的预期结果

KPIPYCY
sales_volume15002570

补充:为什么原查询是行结构?

你原来的查询是按time字段分组(GROUP BY 1),所以每个时间区间会生成一行记录。而条件聚合是把多个分组的结果直接转换成列,这里不需要额外分组(除非你要按其他维度拆分,当前需求不需要)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:17:42