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

如何通过SQL查询获取指定日期范围内的账户收支汇总结果

完善SQL查询以按日期范围统计账户收支

需求说明

我在SQL Server中有两张表:

  • Accounts表:存储账户信息(含AccID、AccName字段)
  • Transaction_Body表:存储交易明细(含AccID、Debt借方、Credit贷方、交易日期字段,假设日期字段名为TransDate)

需要指定起始和结束日期,统计每个账户在该日期范围内的总借方、总贷方金额,得到目标查询结果。

现有代码

SELECT    Accounts.AccName, 
          SUM(ISNULL(Transaction_Body.Debt, 0)) AS [total debet],
          SUM(ISNULL(Transaction_Body.Credit, 0)) AS [total Credit] 
FROM      Accounts 
LEFT JOIN Transaction_Body 
       ON Accounts.AccID = Transaction_Body.AccID 
GROUP BY  Accounts.AccName

完善后的代码

-- 定义日期参数,替换为实际需要的起始/结束日期
DECLARE @StartDate DATE = '2023-01-01'
DECLARE @EndDate DATE = '2023-12-31'

SELECT 
    Accounts.AccName, 
    SUM(ISNULL(Transaction_Body.Debt, 0)) AS [总借方],
    SUM(ISNULL(Transaction_Body.Credit, 0)) AS [总贷方]
FROM 
    Accounts 
LEFT JOIN 
    Transaction_Body 
    ON Accounts.AccID = Transaction_Body.AccID 
    -- 添加日期范围过滤,仅统计指定区间内的交易
    AND Transaction_Body.TransDate BETWEEN @StartDate AND @EndDate
GROUP BY 
    Accounts.AccName

关键调整说明

  • 新增日期参数@StartDate和@EndDate,便于快速修改查询的日期范围
  • 将日期过滤条件放在LEFT JOIN的ON子句中,确保无交易的账户也能被显示(借方、贷方金额为0),如果放在WHERE子句会过滤掉无交易的账户
  • 若你的Transaction_Body表中日期字段名称不是TransDate,请替换为实际字段名
  • 将别名调整为中文表述,更符合中文使用习惯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:45:03