2014-05-13 109 views
0

我有以下表:SQL“分裂”基团通过

('cat', 5000, 7000, 'A'), 
('dog', 9200, 11000, 'A'), 
('fog', 6500, 9300, 'B'), 
('fox', 16001, 15001, 'B'), 
('cat', 5005, 7005, 'B'), 
('dog', 9299, 11399, 'B'), 
('cat', 5005, 7005, 'B'), 
('dog', 9299, 11399, 'B'), 
('fox', 16001, 15002, 'A') 

我需要通过第一列,以获得选择groub然后4列与的总和:

COL2为一个标志,

COL3为一个标志,

COL2为B标志和

COL3对于B˚F落后。

我怎样才能得到这个?

SQLFiddle

+1

请加上预期的查询结果。 –

+0

@ M.Massias预期结果现在在接受的答案^。^ – mauretto

回答

3
SELECT 
    Animal, 
    SUM(CASE WHEN flg = 'A' THEN V1 ELSE 0 END) AS A_V1, 
    SUM(CASE WHEN flg = 'A' THEN V2 ELSE 0 END) AS A_V2, 
    SUM(CASE WHEN flg = 'B' THEN V1 ELSE 0 END) AS B_V1, 
    SUM(CASE WHEN flg = 'B' THEN V2 ELSE 0 END) AS B_V2 
FROM 
    MyTab 
GROUP BY 
    Animal 
+0

+1。[fiddle for your stuff]](http://sqlfiddle.com/#!2/ca8da/22) – potashin

0
select animal, 
    SUM(If(flg='A',V1,0)), 
    SUM(If(flg='A',V2,0)), 
    SUM(If(flg='B',V1,0)), 
    SUM(If(flg='B',V2,0)) 
from MyTab 
group by animal