根据合并表合并/合并行(总计金额)

时间:2018-09-17 16:29:26

标签: ruby-on-rails ruby postgresql

带有Postgresql数据库的Ruby on Rails应用程序 我正在寻找一种合并行的方法(将一行包含一些默认值加到一行下)。让我详细解释一下。

我有一个具有此架构的客户表

|id| |client_code| |first_name| |last_name|
 1    001           John         Smith
 2    002           Joe          Blow
 3    003           Someone      Else
 4    004           Another      Client

我有一个具有此模式的账单表

|id| |client_id| |client_code| | yr |  |mo| |base_fee| |other_fees| |taxes|
 1    1           001           2018    1    150.00     100.00       10.00 
 2    2           002           2018    1    200.00     550.00       12.00
 3    3           003           2018    1    275.00     300.00       11.00
 4    4           004           2018    1    325.00     175.00       9.00
 5    1           001           2018    2    300.15     225.50       8.00
 6    2           002           2018    2    155.00     295.00       11.00

因此,基本上,每个客户每年/每月都有一张账单,其中包含基本费用,其他费用和税款。

我们有几份报告,显示了根据日期范围或所有已付账单或平均账单金额的摘要按年/月订购的客户账单。

例如,客户根据日期范围从01/01/2018到2018/12/31订购的客户账单将显示

| id | | Name    |      |Year| |Month| |Billed|
 001    John Smith       2018   1       260.00
 001    John Smith       2018   2       533.65
 002    Joe Blow         2018   1       762.00
 002    Joe Blow         2018   2       461.00
 003    Someone Else     2018   1       586.00
 004    Another Client   2018   1       509.00 

在同一日期范围内支付的帐单摘要为

| id | | Name    |       |Billed|
 001    John Smith        793.65
 002    Joe Blow          1223.00
 003    Someone Else      586.00
 004    Another Client    509.00 

现在,我们面临的新变化是约翰·史密斯(John Smith)购买乔·布鲁(Joe Blow)的执业方式。

在数据库中,我们希望将客户表中的客户002重命名为John Smith的第二种做法,但我们也希望将客户001和客户002的账单分开,并继续将它们分开,因为它们是两种不同的做法。但是,当我们提取报告时,我们希望有一个可以合并客户的选项,以便将客户001和客户002的账单全部显示在客户001(或客户002,具体取决于哪个被选为“主要”客户)下。

我当时正在考虑创建一个看起来像这样的合并表

|id|  |main_client|  |client_code1|   |client_code2|
 1     001            001              002

但这只会容纳一个客户购买另一个客户,所以我认为最好有一个consolidation / consolidation_detail模式

|id|   |report_as|
 1      001

|id|   |consolidation_id|  |client_id|
 1      1                   001
 2      1                   002

作为参考,合并报告如下所示

| id | | Name    |      |Year| |Month| |Billed|
 001    John Smith       2018   1       1022.00
 001    John Smith       2018   2       994.65
 003    Someone Else     2018   1       586.00
 004    Another Client   2018   1       509.00 

付款帐单的摘要如下所示:

| id | | Name    |       |Billed|
 001    John Smith       2016.65
 003    Someone Else     586.00
 004    Another Client   509.00 

无论是作为基于SQL的解决方案还是基于Ruby / Rails的解决方案,我都在做出决定。

我已经有了使用ActiveRecord的模型方法,该方法使用ActiveRecord从加入客户表的票据表中获取所需的信息,以获取名称等。我只是不知道如何添加合并表以汇总票据值,并根据合并表中指定的客户端对它们进行分组(并使所有没有合并的其他客户端正常运行)。

在控制器中,模型方法返回一个ActiveRecord关系数组,其中包含我需要的所有记录。因此,另一种解决方案是合并数组中的值,但保持ID和名称为静态,同时增加计费金额。

我只是想开始正确的道路。

0 个答案:

没有答案