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

如何编写SQL查询返回两个指定日期的有效交易总余额?

解决方案:按指定日期分行查询交易余额

你可以通过两种方式实现按指定日期分行输出对应余额的需求,以下是具体实现:

方法1:UNION ALL 合并单日期查询

直接将两个单日期的查询结果合并,每个查询明确指定目标日期,即可得到分行的结果:

SELECT '02.05.2020' AS 查询日期, SUM(Amount) AS 对应余额
FROM 交易表
WHERE '02.05.2020' >= `End Date`

UNION ALL

SELECT '02.02.2021' AS 查询日期, SUM(Amount) AS 对应余额
FROM 交易表
WHERE '02.02.2021' >= `End Date`;

注意事项:

  • 日期字符串需加单引号,确保与表中End Date字段的格式匹配,避免类型转换错误
  • 若字段名包含空格,需根据数据库方言用反引号(MySQL)、方括号(SQL Server)或双引号(PostgreSQL)包裹

方法2:构造日期列表关联计算(多日期场景更高效)

先创建包含目标日期的临时数据集,再与交易表关联计算每个日期的余额,适合后续需要扩展更多查询日期的场景:

支持CTE的数据库(如MySQL 8+、PostgreSQL、SQL Server)

WITH 目标日期表 AS (
    SELECT '02.05.2020' AS 查询日期
    UNION ALL
    SELECT '02.02.2021' AS 查询日期
)
SELECT 
    td.查询日期,
    SUM(t.Amount) AS 对应余额
FROM 目标日期表 td
LEFT JOIN 交易表 t ON td.查询日期 >= t.`End Date`
GROUP BY td.查询日期;

不支持CTE的数据库(如MySQL 5.x)

SELECT 
    td.查询日期,
    SUM(t.Amount) AS 对应余额
FROM (
    SELECT '02.05.2020' AS 查询日期
    UNION ALL
    SELECT '02.02.2021' AS 查询日期
) td
LEFT JOIN 交易表 t ON td.查询日期 >= t.`End Date`
GROUP BY td.查询日期;

这种方式的好处是,后续新增查询日期时,只需在日期列表中添加对应的SELECT语句即可,无需重复编写聚合逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:55:33