根据特定条件显示总计

时间:2015-12-04 10:00:02

标签: mysql

Iam试图根据某些标准显示总数。让我展示一下我的数据库结构。

╔════╦═══════════╦═══════════╦════════╦═══════╗
║ 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和show totals找到总和。示例我需要显示其中tender_id = 400和sup_name = Supl1以及ifmain = Yes或Ifmain = No的总计。我需要分别显示ifMain = Yes和ifMain = No totals。我怎样才能做到这一点。

我尝试了以下查询。它按照tender_id工作,现在我还需要为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'

1 个答案:

答案 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