У меня есть запрос на вычитание текущего баланса из одной таблицы с предыдущим балансом из другой таблицы истории. Когда конкретный продукт не имеет текущего баланса, но имеет предыдущий баланс, я могу вычесть его правильно ... в этом случае это будет 0 - 100.
Однако, когда у продукта есть текущий баланс, но нет предыдущего баланса, я не могу получить результат. Мой запрос даже не выбирает текущий баланс, хотя я выполнил полное внешнее объединение для обеих таблиц.
Следующий мой запрос:
SELECT DATEPART(yyyy, @ExecuteDate) * 10000 + DATEPART(mm, @ExecuteDate) * 100 + DATEPART(dd, @ExecuteDate) AS Period_Key,
CASE WHEN GL.GL_Acct_Key IS NULL THEN 0 ELSE GL.GL_Acct_Key END AS GL_Acct_Key,
CASE WHEN BANK.Bank_Type_Key IS NULL THEN 0 ELSE BANK.Bank_Type_Key END AS Bank_Type_Key,
CASE WHEN TSC.TSC_Key IS NULL THEN 0 ELSE TSC.TSC_Key END AS TSC_Key,
ISNULL(FT.CurrentBalance,0) - ISNULL(HIST.CurrentBalance,0) AS Actual_Income_Daily,
CASE WHEN BR.Branch_Key IS NULL THEN 0 ELSE BR.Branch_Key END AS Branch_Key
FROM WSB_Stage.dbo.Stage_TS_Daily_Income_Hist HIST
FULL OUTER JOIN WSB_Stage.dbo.Stage_TS_Daily_Income FT
ON FT.GLAcctID = HIST.GLAcctID AND
FT.BankType = HIST.BankType AND
FT.BranchNumber = HIST.BranchNumber
LEFT OUTER JOIN WSB_Mart.dbo.Dim_Branch BR
ON HIST.BranchNumber = BR.Branch_Code
LEFT OUTER JOIN WSB_Mart.dbo.Dim_GL_Acct GL
ON HIST.GLAcctID = GL.Acct_Code
LEFT OUTER JOIN WSB_Mart.dbo.Dim_Bank_Type BANK
ON HIST.BankType = BANK.Bank_Type_Code
LEFT OUTER JOIN WSB_Stage.dbo.Param_Branch_TSC_Map BRTSC
ON HIST.BranchNumber = BRTSC.BranchNumber
LEFT OUTER JOIN WSB_Mart.dbo.Dim_TSC TSC
ON BRTSC.RegionCode = TSC.TSC_Code
WHERE HIST.TransactionDate = @PreviousDate
AND GL.Acct_Type_Code = 'Interest'
AND BANK.Bank_Type_Key = 1