2013-08-13 16 views
5

データはありますが、各行に順番に番号を付けることができますが、同じ種類の行が連続して番号が同じで、異なるタイプの番号付けを続行します。 タイプ5とタイプ6のみですが、実際にはIDはabc123より複雑です。私はランクを試みたが、私は2つの異なる行数を取得するように見える - の代わりに1 2 2 3 4の例では、それは1つの1 2 2t-SQL行番号を使用しますが、重複行には同じ番号を使用

元画像

enter image description here

密順位結果になります私の知る限り理解し

enter image description here

MS SQL 2008 R2

+0

どのバージョンのSQLですか? –

答えて

6

、あなたは数にしたいですあなたの連続グループ

declare @Temp table (id1 bigint identity(1, 1), ID nvarchar(128), Date date, Type int) 

insert into @Temp 
select 'abc123', '20130101', 5 union all 
select 'abc124', '20130102', 6 union all 
select 'abc125', '20130103', 6 union all 
select 'abc126', '20130104', 5 union all 
select 'abc127', '20130105', 6 union all 
select 'abc128', '20130106', 6 union all 
select 'abc129', '20130107', 6 union all 
select 'abc130', '20130108', 6 union all 
select 'abc131', '20130109', 5 

;with cte1 as (
    select 
     *, 
     row_number() over (order by T.Date) - row_number() over (order by T.Type, T.Date) as grp 
    from @Temp as T 
), cte2 as (
    select *, min(Date) over (partition by grp) as grp2 
    from cte1 
) 
select 
    T.ID, T.Date, T.Type, 
    dense_rank() over (order by grp2) 
from cte2 as T 
order by id1 
+0

ええ、私はそれを試してランクし、私に必要なものではなく、近くに何かを与えました。それは5sを6sと同様に順番に示した。私は同じ数字に6を繰り返して欲しい。 – user2069895

+0

check updated answer –

+0

これはまさに私が探していたものです。あなたの洞察力と助けに感謝します!!!!!!更新された答えが解決策でした。再度、感謝します! – user2069895

関連する問題