加入时将一列中的值汇总到不同 table 的一行中

Summing up values from one column into one row on a different table when joining

我只有 SQL 服务器的(令人沮丧的)几天经验,我需要一些帮助,因为我在搜索时找不到与我的问题相关的任何内容。

关于背景信息,我在一家会计公司工作,现在我正在尝试创建一个 table 用于余额报表,以便在 crystal 报告中使用。每张发票都有多个项目,但对于报表,我需要将它们全部汇总,发票参考是 link 需要汇总的数据组的信息。

所以,我需要从一个 table (dbo.SalesInvItems) 中提取信息,这些信息包括日期 (InvDate)、截止日期 (InvDueDate) 和客户姓名 (顾客姓名)。此信息与发票参考 (InvRef) 保持一致,这就是我想用于 link 两个 table 的信息。 例如,发票编号:1478 的日期始终为 14/05/18,到期日期:14/06/18 以及客户名称:Pen Sellers Ltd.

多行使用相同的发票参考,但唯一改变的(我需要的)是发票项目总计 (InvItemTotal)。 例如,一个参考将始终发送给 Pen Sellers,但一件商品的总价为 13 英镑,而另一件使用相同参考的商品为 20 英镑。

Invoice Item Total 是我需要总结的。我想将具有相同发票参考的所有发票项目总计加在一起,同时加入 tables。

Sales Invoices

因此,当我将参考文献插入 table 时(抱歉,两张图片中它们不一样,我在制作示例时遇到了问题,我犯了一个错误),我想抓住发票中的信息 table 填写,从这...

Pre Solution

为此...

Desired Result

所需位置是一个名为 dbo.Statement 的 table。

1.Is这还有可能吗? 2.How 我会这样做吗? 3.Is 我可以使用一种方法来确保每次我将发票参考插入报表 table 时,它会自动从发票 Table 中提取所需的数据?

如果需要任何其他信息,请说出来,我会尽力提供,我以前从未在这里问过问题,而且我是 SQL 服务器和一般编码的新手.

我正在使用 SQL 服务器管理工​​具 2017

谢谢

Select item.InvRef
   , item.CustomerName
   , item.InvDate
   , item.InvDueDate
   , Sum(item.InvItemTotal) InvAmt
   , sum(IsNull(payments.Amount,0)) PayAmount
   , Sum(item.InvItemTotal) InvAmt - sum(IsNull(payments.Amount,0))  as Balance
from SalesInvItems item 
left join payments -- you didn't define this
    on item.InvRef = payments.InvRef
group by item.InvRef
   , item.CustomerName
   , item.InvDate
   , item.InvDueDate
Select item.InvRef
   , item.CustomerName
   , item.InvDate
   , item.InvDueDate
   , Sum(item.InvItemTotal) InvAmt
from SalesInvItems item 
left join Statement
   on item.InvRef = Statement.Reference
group by item.InvRef
   , item.CustomerName
   , item.InvDate
   , item.InvDueDate