查询从多行连接数据

时间:2012-09-06 19:07:19

标签: mysql

假设我有以下数据:

id     PGroup   Number
103     AAA         9946
103     BBB         8847
103     CCC         7260
103     DDD         1531
103     EEE         473
103     FFF         106
111     BBB         15353
111     AAA         15243
111     CCC         7615
111     DDD         2111
111     EEE         930
111     GGG         807
111     HHH         123
113     BBB         15585
113     AAA         12714
113     CCC         4343
113     DDD         2561
113     EEE         1063
113     GGG         406
113     HHH         69
123     AAA         11448
123     BBB         9560

对于每个ID,我想获得AAA + BBB的总和。这是一个可查询的吗?

103      AAA+BBB    18793
103     CCC         7260
103     DDD         1531
103     EEE         473
103     FFF         106
111     AAA+BBB     30596
111     CCC         7615
111     DDD         2111
111     EEE         930
111     GGG         807
111     HHH         123

2 个答案:

答案 0 :(得分:1)

GROUP_CONCAT允许您执行类似的操作,如果您接受遗漏PGroup不是'AAA''BBB'的行:

SELECT
    id, 
    GROUP_CONCAT(PGroup SEPARATOR '+'),
    SUM(Number)
FORM tbl
WHERE PGroup IN ('AAA', 'BBB')
GROUP BY id

答案 1 :(得分:1)

您可以使用CASE语句将AAA和BBB值组合成一行,如下所示:

select id as id,
  (case when PGroup in ('AAA','BBB') then 'AAA+BBB' else PGroup end) as super_group,
  sum(number) as total
from your_table
group by id,super_group