Тот же стол SQL Присоединяется - PullRequest
0 голосов
/ 20 января 2020

У меня есть два оператора выбора, моя цель - отобразить сумму счета и сумму штрафа. Можно ли это сделать с помощью объединений?

SELECT SUM([Amount]) AS 'BILLING',(SELECT SUM([Amount])
                                FROM Transactions
                                WHERE CAST([TransactionDate] AS DATE)>(SELECT TOP 1 CAST([TransactionDate] AS DATE)  
                                FROM Transactions WHERE CustNo = 6313 AND [Particulars]='Payment' ORDER BY [Id] DESC) 
                                AND [CustNo]=6313 
                                AND [Particulars]='Penalty') AS 'PENALTY'
FROM Transactions
WHERE CAST([TransactionDate] AS DATE)>(SELECT TOP 1 CAST([TransactionDate] AS DATE)  
FROM Transactions WHERE CustNo = 6313 
AND [Particulars]='Payment' ORDER BY [Id] DESC) 
AND [CustNo]=6313 
AND [Particulars]='Billing'

1 Ответ

0 голосов
/ 20 января 2020

Вы можете использовать условное агрегирование:

SELECT SUM(CASE WHEN [Particulars]='Billing' THEN [Amount] ELSE 0 END) AS 'BILLING',
       SUM(CASE WHEN [Particulars]='Penalty' THEN [Amount] ELSE 0 END) AS 'PENALTY',
FROM Transactions
WHERE CAST([TransactionDate] AS DATE)>(SELECT TOP 1 CAST([TransactionDate] AS DATE)  
FROM Transactions WHERE CustNo = 6313 
AND [Particulars]='Payment' ORDER BY [Id] DESC) 
AND [CustNo]=6313 
AND [Particulars]='Billing'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...