У меня есть проект моей базы данных в соответствии с диаграммой.Иерархическая сумма SQL Server столбца
Category
таблица самостоятельная ссылка родительских отношений ДЕТСКОГОBudget
будет иметь все категории и количество определяет для каждой категорииExpense
таблица будет иметь записи для категорий, для которых сумма была потратьте (см. таблицуTotal
из этой таблицы).
Я хочу написать оператор выбора, который будет извлекать набор данных с колоннами, приведенными ниже:
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)
Я пытался использовать КТР, но был не в состоянии производить что-нибудь полезное. Заранее благодарны за Вашу помощь. :)
Update
Я просто объединить и упростить данные, которые я создал один вид с ниже запроса.
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
В основном это должно приводить к таким результатам.
Просьба представить некоторые выборочные данные и ожидаемый результат. –
@FelixPamittan Я редактировал вопрос с более подробной информацией –
@SachinTrivedi, Попробуйте рекурсивный запрос, который у меня есть в ответе. Возможно, вам придется немного поработать над этим, так как у меня нет доступа к тесту, запустите его с некоторыми данными. – Sunil