Theo như tôi thấy, bạn cần tham gia DimAccounts
với chính nó để liên kết tài khoản loại B với tài khoản loại S tương ứng của chúng, sau đó nối hàng đó được đặt thành FactBudget
để cuối cùng có được các số liệu. Một cái gì đó như thế này:
SELECT
f.TimeKey,
s.AccountKey,
SUM(f.Debit) AS Debit,
SUM(f.Credit) AS Credit
FROM DimAccounts s
INNER JOIN DimAccounts b ON b.AccountCode BETWEEN s.AccountFrom AND s.AccountTo
INNER JOIN FactBudget f ON f.AccountKey = b.AccountKey
WHERE s.AccountType = 'S'
AND b.AccountType = 'B'
GROUP BY
f.TimeKey,
s.AccountKey