2016-12-16 69 views
0

我有兩個SQL數據庫中的表即計算每一筆交易開放BAL後餘額

Cust_Table(CustID, CustName, custAddrs, CustMob, CustOpBal) 

而且

Trans_Table(TransId, CustID, TransAmt, TransType(bool dr/cr), Msg, TansDate) 

現在我需要的SQL查詢的越來越聲明等(銀行存摺)特別是 客戶ID?

Date  Message Dt_Amount Cr_Amount Balance 

蔭使用下面的查詢

SELECT t1.Trans_Date, t1.Trans_Msg, 
(CASE WHEN t1.Trans_Type=1 THEN 'Cr' ELSE 'Dr' END) as Trans_Type, 
t1.Trans_Amount, 
SUM(t2.Trans_Amount*case when t2.trans_type = '1' then 1 else -1 end) as Balance 
FROM [LNLCredit].[dbo].[Trans_Table] t1 
INNER JOIN [LNLCredit].[dbo].[Trans_Table] t2 
ON t1.cust_id = t2.cust_id AND t1.trans_id >= t2.Trans_ID 
WHERE t1.Cust_ID=2 
GROUP BY t1.cust_id,t1.trans_id,t1.trans_type,t1.Trans_Amount,t1.Trans_Date,t1.Trans_Msg; 

其工作的罰款。

但我也想添加Opening Balance(從Cust_Table)到上面的解決方案。

請幫忙??????

+0

剛剛加入到'Cust_Table',從那裏添加任何領域,不要忘記將其包含在「Group By」子句中。 – Arvo

回答

0

試試這個..

SELECT t1.Trans_Date, t1.Trans_Msg, 
(CASE WHEN t1.Trans_Type=1 THEN 'Cr' ELSE 'Dr' END) as Trans_Type, 
t1.Trans_Amount, 
SUM(t2.Trans_Amount*case when t2.trans_type = '1' then 1 else -1 end) as Balance, 
c.CustOpBal 
FROM [LNLCredit].[dbo].[Trans_Table] t1 
INNER JOIN [LNLCredit].[dbo].[Trans_Table] t2 
     ON t1.cust_id = t2.cust_id AND t1.trans_id >= t2.Trans_ID 
INNER JOIN Cust_Table C on C.cust_id = t1.cust_id 
WHERE t1.Cust_ID=2 
GROUP BY t1.cust_id,t1.trans_id,t1.trans_type,t1.Trans_Amount, 
     t1.Trans_Date,t1.Trans_Msg,C.CustOpBal; 

你需要列中添加額外的INNER JOIN並添加openingBalance到GROUP BYSELECT

+0

它確定,但我需要更新交易餘額中的期初餘額。 – kamal