2015-12-04 4 views
2

Iam пытается показать итоговые значения в зависимости от определенных критериев. Позвольте мне показать мою структуру db.Отображение итогов в соответствии с определенными условиями

╔════╦═══════════╦═══════════╦════════╦═══════╗ 
║ id ║ tender_id ║ sup_name ║ ifmain ║ total ║ 
╠════╬═══════════╬═══════════╬════════╬═══════╣ 
║ 1 ║ 400 ║ Suppl1 ║ Yes ║ 2000 ║ 
║ 2 ║ 400 ║ Suppl2 ║ Yes ║ 2500 ║ 
║ 3 ║ 400 ║ Suppl1 ║ No ║ 2000 ║ 
║ 4 ║ 400 ║ Suppl3 ║ No ║ 2900 ║ 
║ 5 ║ 400 ║ Suppl1 ║ Yes ║ 3100 ║ 
║ 6 ║ 402 ║ Suppl2 ║ Yes ║ 877 ║ 
║ 7 ║ 402 ║ Suppl3 ║ No ║ 9888 ║ 
╚════╩═══════════╩═══════════╩════════╩═══════╝ 

Теперь мне нужно найти сумму общей по tender_id и sup_name и ifmain и показывают итоги. Пример. Мне нужно показать итоги, где tender_id = 400 и sup_name = Supl1 и ifmain = Yes или Ifmain = No. Мне нужно показать ifMain = Yes и ifMain = Нет итогов отдельно. Как я могу это достичь.

Я пробовал нижеследующий запрос. его работа в соответствии с тендером, теперь мне также нужно добавить условие для sup_name. Как я буду делать это:

select tender_id, SUM(CASE WHEN ifmain = 'Yes' THEN total ELSE 0 END) AS maintotal, 
SUM(CASE WHEN ifmain = 'No' THEN total ELSE 0 END) AS subtotal from 
comparitive_st_sup where tender_id='400' 
+0

показан пример вывода вы хотите –

ответ

1

Вы близки, просто добавьте группировку:

select tender_id, 
     sup_name, 
     SUM(CASE WHEN ifmain = 'Yes' THEN total ELSE 0 END) AS maintotal, 
     SUM(CASE WHEN ifmain = 'No' THEN total ELSE 0 END) AS subtotal 
from comparitive_st_sup 
group by tender_id, sup_name 
+0

Спасибо .. :) это небольшая ошибка, которую я сделал. – user310668

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