2014-11-05 1 views
1

Transaction TableSQL для создания резюме финансовых операций отчет

У меня есть таблица транзакций, как картинке выше. Теперь я хочу, чтобы создать сводный отчет следующим образом:

Result Table

Что будет лучший подход писать SQL?

Пожалуйста, помогите. Заранее спасибо :)

+1

Этот вопрос не соответствует теме, потому что это описание требований. –

+0

Я могу сделать это, используя общее табличное выражение. Но я хочу знать, есть ли лучший подход. Спасибо за прощальное голосование :) –

+0

Это ** резюме ** (не * summery *) –

ответ

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


и еще один вариант - без использования КТР:

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

у вас есть опечатка в коде - в нижнем запросе –

+0

Thankx @Andrey :). Я исправил это. –

Смежные вопросы