根据不同的字段标准对同一字段求和两次
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
它显示每个客户的操作及其特定日期。我正在尝试从查询中生成报告。因此,我需要查询到
- 按 CustomerName
对 table 进行分组
- 将 OperationDate <=31/01/2016 的借方总和和贷方总和显示为 Debit_OB 和 Credit_OB
- 显示 '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 有效,尽管性能将成为数万条记录的问题。
这是我的第一个问题。不知道标题说的清楚没有。 在过去的 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
它显示每个客户的操作及其特定日期。我正在尝试从查询中生成报告。因此,我需要查询到
- 按 CustomerName 对 table 进行分组
- 将 OperationDate <=31/01/2016 的借方总和和贷方总和显示为 Debit_OB 和 Credit_OB
- 显示 '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 有效,尽管性能将成为数万条记录的问题。