2017-02-24 3 views
0

Unter meinem TischQuery Gruppe auf der Grundlage der sortierten Tabelle Ergebnis

a 1 
a 2 
a 1 
b 1 
a 2 
a 2 
b 3 
b 2 
a 1 

Mein Erwarteter Ausgang ist

a 4 
b 1 
a 4 
b 5 
a 1 

ich will, ist sie gruppiert werden, wenn sie in der Reihenfolge sind.

+4

(1) Markieren Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. (2) SQL-Tabellen repräsentieren * ungeordnete * Mengen. Ohne eine Spalte zur Angabe der Reihenfolge ist Ihre Frage bedeutungslos. –

Antwort

0

Wenn Ihr dbms Fensterfunktionen unterstützt, können Sie die row_number-Differenz verwenden, um derselben Gruppe aufeinanderfolgende Werte (die identisch sind) in einer Spalte zuzuweisen. Nach dem Zuweisen der Gruppen ist es einfach, die Werte für jede Gruppe zu summieren.

select col1,sum(col2) 
from (select t.*, 
     row_number() over(order by someid) 
     - row_number() over(partition by col1 order by someid) as grp 
     from tablename t 
    ) x 
group by col1,grp 

Ersetzen Sie Tabellenname, Spalte1, Spalte2, Someid mit den entsprechenden Spaltennamen. Someid sollte die Spalte sein, die von bestellt werden soll.

Verwandte Themen