【问题标题】:Looping through a database using multiple tables (and returning a SUM)使用多个表循环访问数据库(并返回 SUM)
【发布时间】:2021-11-11 05:53:09
【问题描述】:

我目前有一个数据库,其中包含公寓所有者在一组公寓中进行的交易表

当我运行这个查询时:

SELECT Account, Sum([Debit]) - SUM([Credit]) as Balance
  FROM [Boschendal Manor BC].[dbo].[PostGL] as PostGl 
  Inner JOIN [Boschendal Manor BC].[dbo].[Client] as Client on Client.DCLink = DrCrAccount
  where DrCrAccount = '2' and AccountLink <> '104' and TxDate < '2021/11/30' Group By Account

它显示单元 1 的 11 月 30 日之前的帐号和余额 - 如果我将 DrCrAccount 增加到 3,它将显示单元 2 的相同...等等

所以我需要遍历数据库中的客户数量,得到每个账号和余额。

我已经弄清楚如何获取客户数量,如下所示:

select COUNT(*) from [Boschendal Manor BC].[dbo].[Client] where DCBalance is not NULL

这会返回130

有谁知道我如何循环遍历 PostGL 表,只要 Clients 表是 ,然后返回日期在 2021/11/30 之前的借方和贷方的总和吗?

【问题讨论】:

    标签: sql sql-server pyodbc


    【解决方案1】:

    DrCrAccount 添加到group by 并删除过滤器将为您提供所有客户数据。像这样:

    SELECT   DrCrAccount , Account, Sum([ Debit ]) - SUM([ Credit ]) as Balance
      FROM [ Boschendal Manor BC ] . [ dbo ] . [ PostGL ] as PostGl
     Inner JOIN [ Boschendal Manor BC ] . [ dbo ] . [ Client ] as Client
        on Client.DCLink = DrCrAccount
     where  AccountLink <> '104'
       and TxDate < '2021/11/30'
     Group By Account , DrCrAccount 
    

    编辑关于您对此答案的评论:您不能直接过滤诸如余额之类的别名。

    一种解决方案是把它作为子查询,然后像这样过滤它:

    Select * from 
    (
    SELECT   DrCrAccount , Account, Sum([ Debit ]) - SUM([ Credit ]) as Balance
      FROM [ Boschendal Manor BC ] . [ dbo ] . [ PostGL ] as PostGl
     Inner JOIN [ Boschendal Manor BC ] . [ dbo ] . [ Client ] as Client
        on Client.DCLink = DrCrAccount
     where  AccountLink <> '104'
       and TxDate < '2021/11/30'
     Group By Account , DrCrAccount
    ) tbl
    where tbl.Balance > 200
    

    【讨论】:

    • 非常感谢您的回答,这是有效的---附带说明,当我将and Balance &gt; 200 添加到此查询时,它会返回一个错误,指出Balance 不存在,请执行你知道为什么会这样吗?
    • 是的。我会在你的问题之前添加另一个答案
    • 我编辑了我的答案。请检查并不要忘记将其标记为正确答案并为我的声誉投票:)
    猜你喜欢
    • 1970-01-01
    • 2018-11-21
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    相关资源
    最近更新 更多