根据不同的字段标准

时间:2016-12-12 19:54:58

标签: ms-access ms-access-2010 ms-access-2013

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

我将下表称为“CustomerOperationTable”
客户名称| OperationDate |借记|信用|
.-------------------- | --------------------- | ------ - | -------- |
客户A ...... | 01/01/2016 ..... | 2000年| 0 ...... | 客户A ...... | 08/01/2016 ..... | 1000 | 0 ...... | 客户A ...... | 29/01/2016 ..... | 0 ...... | 2500 |
客户A ...... | 02/02/2016 ..... | 2500 | 0 ...... | 客户A ...... | 03/04/2016 ..... | 3000 | 0 ...... | 客户A ...... | 04/04/2016 ..... | 0 ...... | 4000 |
客户B ...... | 02/03/2016 ..... | 2000年| 0 ...... | 客户B ...... | 03/03/2016 ..... | 0 ...... | 4000 |
客户B ...... | 04/03/2016 ..... | 3000 | 0 ...... | 客户B ...... | 05/04/2016 ..... | 0 ...... | 1000 |

The table in a picture made by Excel

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

  1. 按CustomerName对表进行分组
  2. 以Debit_OB和Credit_OB
  3. 显示借记和贷款总和,其中OperationDate为< = 31/01/2016
  4. 再次显示借方和贷款总额,其中OperationDate介于2016年2月1日至2016年11月1日期间
  5. 所以结果将如下表

    客户名称| Debit_OB | Credit_OB | Debit_CB | Credit_CB |
    .--------------------- | -------------- | ------------ --- | -------------- | --------------- |
    CustomerA ........ | 3000 ....... | 2500 ......... | 5500 ....... | 4000 ......... |
    CustomerB ........ | 0 .............. | 0 ................ | 5000 ....... | 5000 ......... |

    The required Query Result made by excel

    我尝试了很多我在互联网上找到的解决方案,但没有一个对我有用。 我真的非常感谢你的帮助。 很高兴提供完成结果所需的任何信息。

    ps:请忽略为格式化目的而添加的额外“.....”。

1 个答案:

答案 0 :(得分:0)

我的解决方案往往令人不安,但是嘿!我收到了要求的结果。
我的疑问是:

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可行,但性能将成为成千上万条记录的问题。