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

如何使用SQL VBA查询近30天交易的总营收?

解决你的SQL查询问题

嘿,我来帮你捋捋这个查询的问题所在~

你的原查询语句之所以既没结果也没报错,核心问题是用错了筛选子句,而且逻辑完全跑偏:

  • HAVING子句是用来过滤聚合后的分组结果的,不是用来筛选原始数据行的;
  • 没有GROUP BY的情况下,整个表会被当成一个分组,MAX(tran_date)是表中的最新日期,但把非聚合列tran_date放在HAVING里,数据库只会随机取某一行的日期来判断条件,这根本不是你想要的“筛选近30天交易”的逻辑。

正确的查询写法分两种情况:

情况1:基于当前日期的近30天营收

如果你的“近30天”是指从今天往前推30天,用WHERE子句先筛选符合日期条件的交易,再求和:

SELECT SUM(total_amt) AS total_revenue
FROM Transactions
WHERE tran_date >= CURRENT_DATE - INTERVAL '30 days';

注:不同数据库的日期语法略有差异,比如MySQL用CURDATE() - INTERVAL 30 DAY,SQL Server用DATEADD(day, -30, GETDATE()),你可以根据自己使用的数据库调整。

情况2:基于表中最新交易日期的近30天营收

如果你是想以表中最新的交易日期为基准,往前推30天的营收(也就是你原语句里用MAX(tran_date)的意图),可以用子查询先获取最新日期,再筛选:

SELECT SUM(total_amt) AS total_revenue
FROM Transactions
WHERE tran_date >= (SELECT MAX(tran_date) FROM Transactions) - INTERVAL '30 days';

这样就能正确计算出你想要的近30天总营收啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:46:56