2012-09-06 24 views
1

Concat的數據假設我有以下數據:查詢來從多行

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 

回答

1

GROUP_CONCAT將允許你做這樣的事情,如果你接受離開了行,其中PGroup'AAA''BBB'

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

謝謝,這就像一個魅力! – David

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 
+0

謝謝,這就像一個魅力! – David