Return 将总和乘以日期范围的月份

Return Multiple Sums By Moth For Date Range

我已经看到了这个问题的多个版本,但没有针对我的特定版本的解决方案。我有两个 table。其中一个有 2 个数字相加。 table 之间没有限制。我想要一个结果集,其中 returns 每个 table 在给定日期范围内按月计算的总和。例如:

月份Total_CollectionsTotal_Expenses

我附上了 table 的架构:

据我了解您的问题,此解决方案应该符合您的期望, 我的解决方案在 Oracle 进行了测试:

对于给定的 YEAR-MONTH 键,它 returns 计数:

SELECT exp.Month , exp.ExpenseCount , coll.CollectionCount 
FROM 
(SELECT  
    TO_CHAR(ExpenseDate, 'YYYY-MM') as Month,
    COUNT(1) as ExpenseCount 
    FROM Expenses 
    GROUP BY TO_CHAR(ExpenseDate, 'YYYY-MM')
) exp ,
(SELECT  
    TO_CHAR(CollectionDate, 'YYYY-MM') as Month,
    COUNT(1) as  CollectionCount
    FROM Collection  
    GROUP BY TO_CHAR(CollectionDate, 'YYYY-MM')
) coll 
WHERE exp.Month = coll.Month ;

示例输出:

MONTH     | EXPENSECOUNT | COLLECTIONCOUNT 
2017-11           1              1 
2017-12           2              3
SELECT exp.Month , exp.ExpenseCount , coll.CollectionCount 
FROM 
(SELECT  
    Convert(VARCHAR(6), Expenses.ExpenseDate, 112) as Month,
    SUM(Expenses.ExpenseAmount) as ExpenseCount 
    FROM Expenses 
    GROUP BY Convert(VARCHAR(6),Expenses.ExpenseDate, 112)
) exp ,
(SELECT  
    Convert(VARCHAR(6),Collection.CollectionDate, 112) as Month,
    SUM(Collection.CashAmount) as  CollectionCount
    FROM Collection  
    GROUP BY Convert(VARCHAR(6),Collection.CollectionDate, 112)
) coll 
WHERE exp.Month = coll.Month