1

假设我有以下数据:

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
4

2 回答 2

1

GROUP_CONCATPGroup如果您接受省略不是'AAA'或的行,将允许您执行类似的操作'BBB'

SELECT
    id, 
    GROUP_CONCAT(PGroup SEPARATOR '+'),
    SUM(Number)
FORM tbl
WHERE PGroup IN ('AAA', 'BBB')
GROUP BY id
于 2012-09-06T19:09:47.857 回答
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
于 2012-09-06T19:17:31.313 回答