【发布时间】:2012-12-12 04:44:13
【问题描述】:
我正在尝试汇总单个到期日下的付款历史记录,并创建一个类似下面显示的 html 表格。
+--------------+---------------+----------------+
| Date Due | Amount Paid | Date Paid |
+--------------+---------------+----------------+
| Nov, 1 2012 | $10 | Oct, 21 2012 |
| | $15 | Oct, 18 2012 |
| Oct, 14 2012 | $20 | Oct, 13 2012 |
| | $20 | Sep, 3 2012 |
+--------------+---------------+----------------+
我面临的问题是这样的:
到期日期、支付金额和支付日期数据字段都在同一表格行中。到期日期不一定对应于实际付款的时间(可能付款晚了 3 周)。或者......也许在一个到期付款日期的时间范围内收到了两笔付款。
如何有效地解决此类问题并将其显示在表格中?我已经尝试了几种方法,但代码过于系统进程密集。
编辑:数据库表中的行当前看起来像这样:
+--------------+---------------+----------------+
| Date Due | Amount Paid | Date Paid |
+--------------+---------------+----------------+
| Nov, 29 2012 | $10 | Oct, 21 2012 |
| Nov, 15 2012 | $15 | Oct, 18 2012 |
| Nov, 1 2012 | $20 | Oct, 13 2012 |
| Oct, 14 2012 | $20 | Sep, 3 2012 |
+--------------+---------------+----------------+
但客户必须为每个到期日支付 50 美元。在这种情况下,客户拆分了他们的付款,但由于表格中数据的格式设置,它不适用于当前的到期日。
很遗憾,我无法更改数据库中的任何内容。
【问题讨论】:
-
所以您有想要汇总到到期日的付款历史记录?你的桌子是用来交流什么的?此外,您应该能够在查询中执行此操作,只需遍历行并显示它们;没有花哨的逻辑。这就是 SQL 的用途,真的。
-
该表用于传达每个到期日的付款。有时客户会将他们的付款分成两笔或多笔付款。问题是,由于数据库中的付款到期日应该对应于每次付款(并且也在同一表行上),因此有时会出现客户已全额付款,但实际上只进行了一次部分付款。
-
@JaredFarrish 是的,我正在尝试在一个到期日汇总付款历史记录!谢谢你的措辞更好。 :)
-
您想要完成的是ledger accounting,您可以将其视为通过(滚动)债务和付款总额的总和来汇总义务和针对这些义务的交易。但是,您拥有的东西至少看起来并不是为交易而设计的; “到期日”实际上仅通过账户持有人的关系与账户持有人和付款金额有关。因此,到期日期应该在另一个表中,并与付款总额进行比较。付款日期实际上只是付款元数据。
-
简而言之,Date Due 仅显示了一项义务,而没有其他意义。因此,您可以显示迄今为止的总付款(并忽略到期日期),或按到期日期显示付款(可能是“拖欠”或赤字表??)。您可以在 Date Due 旁边的查询中放置一列,其中包含
'$50',然后将其用作单独的列。唯一的问题是,如果您有带有到期日期条目的连续付款,这意味着您可以在到期日期执行聚合GROUP ON以显示该义务的付款总额。这可能很有用。