根据不同的字段标准对同一字段求和两次

sum the same field twice based on a different field Criteria

这是我的第一个问题。不知道标题说的清楚没有。 在过去的 5 天里,我一直坚持这一点。我无法在互联网上的任何地方找到解决方案。我在 Windows 8 上使用 Microsoft Access 2013。我对 sql 编码有非常基本的了解。

下面的table叫"CustomerOperationTable"
客户名称|操作日期|借方|致谢|
.--------------------|--------------------|------ --|--------|
客户A…… | 2016 年 1 月 1 日...... | 2000 | 0 ...... |
客户A…… | 08/01/2016 ...... | 1000 | 0 ...... |
客户A…… | 2016 年 1 月 29 日...... | 0…… | 2500 |
客户A…… | 2016 年 2 月 2 日...... | 2500 | 0 ...... |
客户A…… | 2016 年 3 月 4 日...... | 3000 | 0 ...... |
客户A…… | 2016 年 4 月 4 日...... | 0…… | 4000 |
客户B...... | 2016 年 2 月 3 日...... | 2000 | 0 ...... |
客户B...... | 2016 年 3 月 3 日...... | 0…… | 4000 |
客户B...... | 2016 年 4 月 3 日...... | 3000 | 0 ...... |
客户B...... | 2016 年 5 月 4 日...... | 0…… | 1000 |

The table in a picture made by Excel

它显示每个客户的操作及其特定日期。我正在尝试从查询中生成报告。因此,我需要查询到

  1. 按 CustomerName
  2. 对 table 进行分组
  3. 将 OperationDate <=31/01/2016 的借方总和和贷方总和显示为 Debit_OB 和 Credit_OB
  4. 显示 'again' 操作日期在 01/02/2016 和 01/11/2016 之间的借方和贷方总和

所以结果会像下面的table

客户名称| Debit_OB| Credit_OB| Debit_CB| Credit_CB|
.--------------------|------------|------------ ---|----------------|----------------|
客户A....... | 3000………… | 2500………… | 5500 ...... | 4000......... |
客户B....... | 0 ............... | 0 ............... | 5000....... | 5000......... |

The required Query Result made by excel

我尝试了很多在互联网上找到的解决方案,但 none 对我有用。 非常感谢您的帮助。 很乐意提供完成结果所需的任何信息。

ps:请忽略额外的“.....”,仅用于格式化目的。

我的解决方案往往很麻烦,但是嘿!我得到了要求的结果。
我的查询是:

SELECT YourTable.CustomerName, 
Sum(IIf([OperationDate]<=(#1/31/2016#),[Debit],0)) AS Debit_OB, 
Sum(IIf([OperationDate]<=(#1/31/2016#),[Credit],0)) AS Credit_OB, 
Sum(IIf([OperationDate]>(#1/31/2016#) And [OperationDate]<(#11/1/2016#),[Debit],0)),
Sum(IIf([OperationDate]>(#1/31/2016#) And [OperationDate]<(#11/1/2016#),[Credit],0))
FROM YourTable
GROUP BY YourTable.CustomerName;

AutoMagically 有效,尽管性能将成为数万条记录的问题。