我有3個表:DimAccounts,DimTime和FactBudget。如何合計帳戶
DimAccounts例如:
AccountKey Accouncode AccountType AccountFrom AccountTo
1.10001 10001 S 11401 27601
1.10002 10002 S 11401 16501
1.11000 11000 S 11401 11508
1.110001 110001 B NULL NULL
1.110002 110002 B NULL NULL
1.11400 11400 S 11401 11408
DimTime例如:
TimeKey FullDate
20020102 2002-01-02
20020103 2002-01-03
20020104 2002-01-04
FactBudget例如:
TimeKey AccountKey Debit Credit
20080523 1.110002 0.00 884.00
20080523 1.110001 0.00 4251.96
20100523 1.100002 229.40 0.00
20080523 1.100002 711.79 0.00
20090523 1.110002 0.00 711.79
20080523 1.110001 0.00 229.40
20040523 1.100002 0.00 15619.05
在FactBudget許多帳戶只是B型我需要計算和借記卡信用總和,其中賬戶類型是S(總和)。列AccountFrom和AccountTo顯示B類型帳戶從哪裏開始總結(AccountFrom)和哪裏結束(AccountTo)。
我用Cursors製作瞭解決方案....但是你知道這很糟糕:)我認爲在FactBudget中組合數據(因爲在factbudget和行600k中也有很多列)以及搜索解決方案時當我離開組只60K行):
SELECT [TimeKey],
[AccountKey],
SUM([Debit]),
SUM([Credit])
FROM [Interlux].[dbo].[FactBudget]
GROUP BY [TimeKey],
[AccountKey]
因此,如何通過TimeKey和AccountKey得到的帳目借記卡和中房總和? (AccountKey數據類型數據類型爲nvarchar)
解決方案例如:
TimeKey AccountKey Debit Credit
20080523 1.10002 0.00 2500
20080523 1.11000 0.00 8000
20080524 1.10002 900 0.00
在情況預算存在與S型無帳戶!!!!我們需要得到它(例如1.11000只是日期20080523):
select
SUM(Debit), SUM(Credit)
from FactBudget
LEFT JOIN [DimAccounts]
ON [DimAccounts].[AccountKey] = FactBudget.[AccountKey]
where CAST([DimAccounts].AccountCode AS INT) >=11401
and CAST([DimAccounts].AccountCode AS INT) <= 11508
and FactBudget.Timekey = 20080523
但我需要每個日期的賬戶借方和貸方的總和。
'AccountFrom'和'AccountTo'有什麼關係? – RedFilter 2012-04-19 17:25:05
另外,你爲什麼要描述表'DimTime',在這裏似乎並不需要。 – RedFilter 2012-04-19 17:31:52
是您在上面爲這兩個表格提供的帳戶密鑰是否正確?您的預期結果顯示1.10002,但該帳戶未顯示在您的FactBudget數據中? – Taryn 2012-04-19 18:01:18