2017-02-24 5 views
0

は私のテーブルには、私の予想される出力は、彼らが順番にされている場合、私はそれらをグループ化することにしたいクエリ以下

a 4 
b 1 
a 4 
b 5 
a 1 

ある

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

です。

+4

(1)使用しているデータベースで質問にタグを付けてください。 (2)SQLテーブルは、*順序付けられていない*集合を表します。順序を指定する列がなければ、あなたの質問は無意味です。 –

答えて

0

dbmsがウィンドウ関数をサポートしている場合、row_numberの差を使用して、同じグループを1つの列の連続した値(同じ値)に割り当てることができます。グループを割り当てた後、各グループの値を合計するのは簡単です。

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 

tablename、col1、col2、someidを適切な列名に置き換えます。 someidは注文する列でなければなりません。