2017-01-08 7 views
1

Ich habe Beispieldaten mit Tabellennamen catdogmysql kumulative Summe von gleichem Feldwert

| No | id | data | 
     1  1 4000  
     2  2 300  
     3  3 100 
     4  1 400 
     5  2 30 
     6  3 10 
     7  1 40 
     8  2 3 
     9  3 1 

ich das Ergebnis so will:

| No | id | data | totaldata | 
    1  1 4000 4000 
    2  2 300  300 
    3  3 100  100 
    4  1 400  4400  --------> 4000 + 400 on id 
    5  2 30  330  --------> 300 + 30 on id 
    6  3 10  110  --------> 100 + 10 on id 
    7  1 40  4440  --------> 4000 + 400 + 40 on id 
    8  2 3  333  --------> 300 + 30 + 1 on id 
    9  3 1  111  --------> 100 + 10 + 1 on id 

Summe, wenn das Feld kein gleiche ist. Wie schreibe ich eine MySQL-Abfrage für meinen Fall?

sehr, sehr vielen Dank GurV

Antwort

1

Try this:

select no, id, data, c_data from (
select t1.*, 
    @data := case when @id = id then @data + data else data end c_data, 
    @id := id 
from 
(select * from catdog 
order by id, No) t1 
cross join (select @id := -1, @data := 0) t2) t 
order by no; 

Es verwendet Variablen benutzerdefinierte Spur Summe zu halten, bis jetzt für jede ID

+0

sehr, sehr vielen Dank GurV – user255512