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

Sql server 在sql server中计算按比例分配的金额,sql-server,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

我想把表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

当然,我在这里做了很多假设。。但这会让你走的

只是内心的结合,也许。。。在某些条件下。。。你需要表现出一些努力,并在这里详细阐述商业案例。表b中的日期是什么意思?数据是如何关联的。。。根据ID或ID和代码或…?我们可以根据ID、代码、楼层、单元号加入。我需要介于销售时段ID之间的定期金额,如果有任何增加或减少,应按比例显示。这将加入表A和B。但如何获得按比例的金额?这取决于您对“按比例金额”的业务定义实际上意味着。。表A的销售时间段始终为EOM。表B有收费开始和结束日期。我需要根据日期按比例计算,例如2015年8月23日的定期金额变化。因此,加入表格后,需要使用以下公式:(23/31*13400.96)+(8/31*14071)=13573.87355。。您可以访问计算所需的所有日期。。不确定这是不是正确的方法。。但有一种方法可以是23=datepart(day,CHARGEENDDATE)31=datepart(day,SALES\u TIME\u PERIOD\u ID)8=datepart(month,CHARGEENDDATE),这应该足以让您了解如何在select语句的公式中使用它。。
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