2016-03-29 10 views
0

Это моя структура таблицы.Заявление CASE с SUM

=================================== 
main_section | currency | amount 
=================================== 

Tender   INR  2000 
Bank    USD  3000 
Tender   INR  1500 
Tender   INR  1850 
=================================== 

Iam пытается сделать СЛУЧАЙ заявление, в котором, если «main_section = тендер» он должен вернуть сумму нежную, если его банк он должен вернуть сумму в банке. Если имеется более одной записи, тогда она должна суммировать и возвращать сумму (здесь Тендер имеет более одной записи). Кто-нибудь может мне с этим помочь. Следующий случай заявление, в котором я попытался

CASE sum(com_payments.main_section 
     WHEN com_payments.main_section = 'Tender' 
     THEN main_tender = com_payments.amount 
END AS maintender1) 
CASE sum(com_payments.main_section 
     WHEN com_payments.main_section = 'Bank' 
     THEN main_bank = com_payments.amount 
END AS mainbank1) 
+2

Синтаксис не исправить его 'сумма (случай, когда main_section =«Tender», то составит еще 0 end) в качестве maintender1, ............... ', и если у вас есть только 2' main_section', то почему бы не 'select main_section, sum (amount) как группа сумм по main_section' –

ответ

2

Вы должны сделать условной агрегации:

SELECT SUM(CASE WHEN main_section = 'Tender' THEN amount END) AS maintender1, 
     SUM(CASE WHEN main_section = 'Bank' THEN amount END) AS mainbank1  
FROM mytable 
+0

работающ отлично. Могу ли я добавить и валюту здесь. На данный момент его показывается только сумма. Мне также нужно получить информацию о валюте. Мне нужно дать отдельный оператор CASE только для валюты? Например ... SELECT SUM (CASE WHEN main_section = 'Tender' THEN amount, currency END) AS maintender1, –

+0

Возможно ли это, или мне нужно добавить отдельный оператор CASE для достижения того же? –

+0

@SanjuMenon Вам нужны два отдельных выражения 'CASE', один для' INR' и еще один для 'USD'. –