连接时将一列中的值汇总到另一张表的一行中

时间:2018-07-23 13:04:21

标签: sql-server join sum sql-server-2017

我只有几天(令人沮丧的)SQL Server使用经验,并且我需要一些帮助,因为在搜索时找不到与我的问题有关的任何东西。

关于背景信息,我正在一家会计公司工作,现在我正在尝试创建一个表,以供在水晶报表中使用的余额报表。每个发票都有多个项目,但是对于该报表,我需要将它们全部加起来,发票参考是链接需要汇总的一组数据的信息。

因此,我需要从一个表(dbo.SalesInvItems)中提取信息,该信息包括日期(InvDate),到期日期(InvDueDate)和客户名称(CustomerName)。此信息与“发票参考”(InvRef)相同,这是我要用来链接两个表的信息。  例如,发票参考:1478将始终具有日期14/05/18,到期日期:14/06/18和客户名称:Pen Sellers Ltd。

同一发票参考由多行使用,但是唯一需要更改的是发票项目总计(InvItemTotal)。  例如,一个参考文献始终会寄给笔卖家,但其中一个项目的总计为£13,而另一个使用相同参考文献的项目则为£20。

我需要总结发票项目总计。我想在加入表格时将所有具有相同发票参考的发票项目总计加在一起。

Sales Invoices

因此,当我将引用插入表中(对不起,两张图片中的引用都不相同,我在制作示例时遇到了问题,但我犯了一个错误),我想从Invoice表中获取信息以填充它,从这里开始...

Pre Solution

对此...

Desired Result

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

1。这甚至有可能做到吗? 2.我该怎么做? 3.是否可以使用一种方法来确保每次将发票参考插入到对帐单表中时,都会自动从发票表中提取所需的数据?

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

我正在使用SQL Server管理工具2017

谢谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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