根据图表,我已经设计好了我的数据库。
Category
表是自关联的父子关系。Budget
表将定义每个类别和金额的所有类别。Expense
表将为已支出金额的类别输入条目(考虑此表中的Total
列)。
我想编写一个SELECT语句来检索以下列的数据集:
ID
CategoryID
CategoryName
TotalAmount (Sum of Amount Column of all children hierarchy From BudgetTable )
SumOfExpense (Sum of Total Column of Expense all children hierarchy from expense table)
我尝试使用CTE,但是无法产生有用的结果。提前感谢您的帮助。:)
更新
我刚刚创建了一个包含以下查询的视图,以组合和简化数据。
SELECT
dbo.Budget.Id, dbo.Budget.ProjectId, dbo.Budget.CategoryId,
dbo.Budget.Amount,
dbo.Category.ParentID, dbo.Category.Name,
ISNULL(dbo.Expense.Total, 0) AS CostToDate
FROM
dbo.Budget
INNER JOIN
dbo.Category ON dbo.Budget.CategoryId = dbo.Category.Id
LEFT OUTER JOIN
dbo.Expense ON dbo.Category.Id = dbo.Expense.CategoryId
基本上,这应该会产生像这样的结果。
![enter image description here](https://istack.dev59.com/NEZXw.webp)