私は2つのテーブルDimAccountsとFactBudgetを持っています。アカウントコードの長さでアカウントを合計するには?
DimAccounts例:
AccountKey AccountCode AccountName AccountGroup AccountType
1.6 1 6 1 NN 6 S
1.6 10 6 10 MMM 6 S
1.6 101 6 101 TTT 6 S
1.6 1010 6 1010 IIII 6 B
1.6 1011 6 1011 OOOO 6 B
1.6 1012 6 1012 KKK 6 B
FactBudget例:FactBudgetで
TimeKey AccountKey Debit Credit
20110719 1.6 1010 20.00 5.00
20110719 1.6 1011 15.00 0.00
20110719 1.6 1000 5.00 0.00
20110719 1.6 1012 10.00 5.00
20110719 1.6 1112 10.00 0.00
はちょうど私がアカウントの種類S(合計)のための借方と貸方合計を取得する必要がありますタイプBと多くのアカウントです。例えば、データの
ソリューション例:合計のための借方と貸方を計算するのに
TimeKey AccountKey Debit Credit
20110719 1.6 1 60.00 10.00
20110719 1.6 10 50.00 10.00
20110719 1.6 101 45.00 10.00
1.6 101(空白で7シンボル)を考慮し、我々は7つのシンボル(1.6 1012年までfactbudget内のすべてのacountsをサブストリングする必要があります - > 1.6 101、1.6 1112 - > 1.6 111、1.6 1011 - > 1.6 101)、次に、タイムキーと借方と借方でグループ化するためには (1.6 101 = 1.6 101)と等しい。
合計口座の借方と貸方を計算するには、実際の予算ですべての口座を部分記号にする必要があります(1.6 1012 - > 1.6 1、1.6 1112 - > 1.6 1、1.6 1011-> > 1.6 1)、そしてそれでは、それらは、タイムキーと借方と借方でグループ化するために、 (1.6 1 = 1.6 1)と等しくなります。
Sアカウントの借方とクレジットの合計をTimeKeyとAccountKeyで取得する方法は?このようなものかもしれない
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 LIKE s.AccountCode + '%'
/* alternatively: ON s.AccountCode = LEFT(b.AccountCode, LEN(s.AccountCode)) */
INNER JOIN FactBudget f ON f.AccountKey = b.AccountKey
WHERE s.AccountType = 'S'
AND b.AccountType = 'B'
GROUP BY
f.TimeKey,
s.AccountKey
を作品は完全にあなたに感謝します – Justin