sql >> データベース >  >> RDS >> Sqlserver

SQL Server :連続してグループ化

    SQL Server では、行番号の集計と差分を使用してこれを行うことができます:

    select HevEvenementID, HteTypeEvenID,
           max(HjvNumeSequJour)
    from (select t.*,
                 row_number() over (partition by HevEvenementID order by HjvNumeSequJour) as seqnum_1,
                 row_number() over (partition by HevEvenementID, HteTypeEvenID order by HjvNumeSequJour) as seqnum_2
          from yourtable t
         ) t
    group by HevEvenementID, HteTypeEvenID, (seqnum_1 - seqnum_2)
    order by max(HjvNumeSequJour);
    

    これがどのように機能するかを理解する最善の方法は、サブクエリの結果を見つめることだと思います。 2 つの値の差が、隣接する値のグループをどのように定義するかがわかります。




    1. 一重引用符でテキストを挿入する方法 SQL Server 2005

    2. MySQL一意の/異なる結果を返す方法は?

    3. Mysqlで最後に更新された行ID

    4. postgresデータベースをsqliteに変換する方法