Как я могу выбрать запрос с условием CASE и SUM () - PullRequest
1 голос
/ 26 июня 2019

Структура таблицы enter image description here

В настоящее время я использую эти SQL-операторы.В моей таблице есть поле trx_type, которое содержит «LD» или «LP».Я могу суммировать сумму основного долга, выполнив 2 оператора SQL, как показано ниже.

select sum(principal) from loanhist where trx_type ='LD' and ac_no  = '101300' and cycle = 1  --150000
select sum(principal) from loanhist where trx_type ='LP' and ac_no  = '101300' and cycle = 1--- 73512.13

Что, если вычесть LD из LP, я получу 76,487.87

, когда я попытался использовать CASEвот так:

-SUM(CASE WHEN trx_type='LD' THEN LoanHist.principal ELSE 0 END) -
SUM(CASE WHEN trx_type='LP' THEN LoanHist.principal ELSE 0 END) AS outstanding_balance

Я получил это -229,463.61.

Так как LD имеет отрицательный знак, если я должен удалить отрицательный знак из SUM, он добавляет цифры вместо вычитания.

Может кто-нибудь предложить лучший способ решения этой проблемы !!

1 Ответ

1 голос
/ 26 июня 2019

Вы можете использовать ABS(), чтобы получить абсолютное (положительное) значение для упрощения вычитания:

SUM(CASE WHEN trx_type='LD' THEN ABS(LoanHist.principal) ELSE 0 END)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...