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

如何计算两列数据差值?10-11月采购营收变化SQL查询错误排查

你编写的SQL存在的核心问题
  • UNION 子句列不匹配,直接触发字段不存在报错
    UNION 合并结果集时按列的位置对齐,不会匹配列名。第一个子查询返回列是month_value、octrevenue,第二个子查询返回列是month_value、novrevenue,合并后的CTE只会继承第一个子查询的列名,不存在novrevenue字段,后续查询引用该字段会直接报错。
  • 结果集为两行结构,无法直接计算跨月差值
    即便修改列名让UNION正常执行,最终CTE返回的是两行分别对应10月、11月的营收数据,每行仅包含当月的营收值,直接做减法时另一月的字段值为NULL,得到的结果也是NULL,无法得到正确的营收差值。

参考正确写法

使用条件聚合的写法更简洁高效,只需一次表扫描即可得到结果:

SELECT
  SUM(CASE WHEN MONTH(event_time) = 10 THEN price ELSE 0 END) AS octrevenue,
  SUM(CASE WHEN MONTH(event_time) = 11 THEN price ELSE 0 END) AS novrevenue,
  SUM(CASE WHEN MONTH(event_time) = 11 THEN price ELSE 0 END) - SUM(CASE WHEN MONTH(event_time) = 10 THEN price ELSE 0 END) AS revenue_diff
FROM retailfinal
WHERE event_type = 'purchase' AND MONTH(event_time) IN (10, 11)

内容的提问来源于stack exchange,提问作者Gokul Pradeep V

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:15:01