这是我的第一个问题。我不知道标题是否清楚地说明了。 过去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
它显示每个客户的具体日期的操作。我正在尝试从查询中生成报告。因此,我需要查询
所以结果将如下表
客户名称| 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:请忽略为格式化目的而添加的额外“.....”。
答案 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可行,但性能将成为成千上万条记录的问题。