两个表上的SQL聚合

两个表上的SQL聚合,sql,oracle,Sql,Oracle,表A使用Oracle从2014年起有数百万条记录 ID Sales_Amount Sales_Date 1 10 20/11/2014 1 10 22/11/2014 1 10 22/12/2014 1 10 22/01/2015 1 10 22/02/2015 1 10 22/03/

表A使用Oracle从2014年起有数百万条记录

ID   Sales_Amount  Sales_Date
1      10           20/11/2014
1      10           22/11/2014
1      10           22/12/2014
1      10           22/01/2015     
1      10           22/02/2015         
1      10           22/03/2015     
1      10           22/04/2015     
1      10           22/05/2015 
1      10           22/06/2015     
1      10           22/07/2015
1      10           22/08/2015
1      10           22/09/2015    
1      10           22/10/2015     
1      10           22/11/2015  
表B

ID   ID_Date
1    22/11/2014
2    01/12/2014
我想要6个月的总数,以及ID 1开始时1年的总数
表B中的日期为2014年11月22日

Output Sales_Amount_6Months Sales_Amount_6Months
1               70                 130   

在这种情况下,我是否应该使用
add_months

是的,您可以使用
ADD_MONTHS()
和条件聚合:

SELECT b.id,
       SUM(CASE WHEN a.sales_date between b.id_date AND ADD_MONTHS(b.id_date,6) THEN a.sales_amount ELSE 0 END) as sales_6_month,
       SUM(CASE WHEN a.sales_date between b.id_date AND ADD_MONTHS(b.id_date,12) THEN a.sales_amount ELSE 0 END) as sales_12_month
FROM TableB b
JOIN TableA a
 ON(b.id = a.id)
GROUP BY b.id

是的,您可以使用
ADD_MONTHS()
和条件聚合:

SELECT b.id,
       SUM(CASE WHEN a.sales_date between b.id_date AND ADD_MONTHS(b.id_date,6) THEN a.sales_amount ELSE 0 END) as sales_6_month,
       SUM(CASE WHEN a.sales_date between b.id_date AND ADD_MONTHS(b.id_date,12) THEN a.sales_amount ELSE 0 END) as sales_12_month
FROM TableB b
JOIN TableA a
 ON(b.id = a.id)
GROUP BY b.id

提供您尝试过的查询您如何决定从表B中选择2014年11月22日,而不是其他日期?您是否从表B中选择“最早”的日期?另外:什么是“6个月”——从2014年11月22日到2015年5月21日?总计以表B中的日期作为ID1的最短日期,即2014年11月22日,从该日期起,我们需要计算表B中的6个月总计和12个月总计,请添加月份(2014年11月22日,6)和添加月份(2014年11月22日,12)对于12个月,提供您尝试过的查询您如何决定从表B中选择2014年11月22日,而不是其他日期?您是否从表B中选择“最早”的日期?另外:什么是“6个月”-从2014年11月22日到2015年5月21日?总计以表B中的日期作为ID1的最短日期,即2014年11月22日,从该日期起,我们需要从表B中计算6个月总计和12个月总计,请在12个月内加上月份(2014年11月22日,6)和月份(2014年11月22日,12)