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