2014-11-05 56 views
1

Transaction Table用於生成金融交易彙總報告的SQL

我有一個類似上圖的交易表。現在,我要生成一個總結報告如下:

Result Table

會是怎樣寫的SQL的最佳方法?

請幫忙。在此先感謝:)

+1

這個問題似乎是無關緊要的,因爲它是一個需求描述。 – 2014-11-05 05:51:49

+0

我可以使用公用表表達式來做到這一點。但我想知道是否有更好的方法。感謝您的投票:) – 2014-11-05 05:57:16

+0

這是一個**總結**(不是*總結*) – 2014-11-05 06:11:39

回答

2

另一種方式來獲得相同的結果,但沒有額外的分組:

WITH base AS 
(
    SELECT Debtor_Acc As Account_NO, Amount*-1 as Amount FROM transaction 
    UNION ALL 
    SELECT Creditor_Acc, Amount FROM transaction 
) 
SELECT Account_NO, SUM(Amount) Amount 
FROM base 
GROUP BY Account_NO 

檢查SQLFiddle


和多一個選擇 - 不使用CTE:

SELECT Account_NO, SUM(Amount) Amount 
FROM 
(
    SELECT Debtor_Acc As Account_NO, Amount*-1 as Amount FROM transaction 
    UNION ALL 
    SELECT Creditor_Acc, Amount FROM transaction 
) 
GROUP BY Account_NO 

檢查SQLFiddle

1

實現報告有很多方法。我用過Common table表達式。 您也可以修改查詢並使用連接。

WITH CTE (Account_NO,Amount) 
AS 
(
SELECT Debtor_Acc As Account_NO,-SUM(Amount) Amount 
FROM transaction GROUP BY Debtor_Acc 
UNION 
SELECT Creditor_Acc,SUM(Amount) 
FROM transaction GROUP BY Creditor_Acc 
) 
SELECT Account_NO,SUM(Amount) FROM CTE 
GROUP BY Account_NO 
+0

你有代碼中的錯字 - 在底部查詢 – 2014-11-05 06:57:41

+0

Thankx @Andrey :)。我糾正了這一點。 – 2014-11-05 08:56:08