在sql server中计算按比例分配的金额

时间:2017-07-07 00:56:31

标签: sql-server

我想加入表A和B&获得按比例分配的销售额。 如何实现这一目标。任何人都可以帮助我吗?

Table A:
SALES_TIME_PERIOD_ID    CODE    ID  FLOOR_NO    UNIT_NO
31/07/2015               CN     K1A    L01        153
31/08/2015               CN     K1A    L01        153
30/09/2015               CN     K1A    L01        153
31/10/2015               CN     K1A    L01        153
30/11/2015               CN     K1A    L01        153
31/12/2015               CN     K1A    L01        153
31/01/2016               CN     K1A    L01        153
29/02/2016               CN     K1A    L01        153
31/03/2016               CN     K1A    L01        153
30/04/2016               CN     K1A    L01        153
31/05/2016               CN     K1A    L01        153
30/06/2016               CN     K1A    L01        153

Table B:

CODE    ID  FLOORNO UNITNO  CHARGESTARTDATE CHARGEENDDATE   PERIODICAMOUNT
CN      K1A  L01    153         24/08/2014  23/08/2015      13400.96
CN      K1A  L01    153         24/08/2015  23/08/2016      14071
CN      K1A  L01    153         24/08/2016  23/08/2017      14774.55

我希望输出为:

SALES_TIME_PERIOD_ID    CODE    ID  FLOOR_NO    UNIT_NO ACTUAL      PRORATED
31/07/2015               CN     K1A   L01       153     13400.96    13400.96
31/08/2015               CN     K1A   L01       153     13400.96    13573.87355
30/09/2015               CN     K1A   L01       153     14071       14071
31/10/2015               CN     K1A   L01       153     14071       14071
30/11/2015               CN     K1A   L01       153     14071       14071
31/12/2015               CN     K1A   L01       153     14071       14071
31/01/2016               CN     K1A   L01       153     14071       14071
29/02/2016               CN     K1A   L01       153     14071       14071
31/03/2016               CN     K1A   L01       153     14071       14071
30/04/2016               CN     K1A   L01       153     14071       14071
31/05/2016               CN     K1A   L01       153     14071       14071
30/06/2016               CN     K1A   L01       153     14071       14071

1 个答案:

答案 0 :(得分:1)

Select 
tableA.SALES_TIME_PERIOD_ID
, tableA.Code
, tableA.ID
, tableA.floor_no
, tableA.Unit_no
, cast(tableB.PERIODICAMOUNT as decimal(13,2)) as ACTUAL
, tableB.PERIODICAMOUNT  as PRORATED


from tableA

inner join tableB
on tableA.Code = tableB.Code
and tableA.ID = tableB.ID
and tableA.floorno - tableB.floorno
and tableA.unitno = tableB.unitno
and tableA.SALES_TIME_PERIOD_ID between tableB.CHARGESTARTDATE and tableB.CHARGEENDDATE

我当然在这里做了很多假设..但是这应该让你去!