2013-08-13 17 views
5

Bazı verilerim var ve sıralı olarak her satırı numaralandırmak isteyebilirsiniz, ancak sırayla aynı türdeki satırları aynı numarayı ve ne zaman farklı bir tür numaralandırma devam ediyor. Sadece 5 ve 6 tipleri olacak, ID aslında abc123'den daha karmaşık. Ben rütbesi denedim ama iki farklı satır sayıları almak gibi - yerine 1 2 2 3 4 örnekte bunun 1 1 2 2t-SQL Satır numarasını kullanın, ancak yinelenen satırlarda aynı sayıyı kullanın

orijinal resim

enter image description here

yoğun rütbe sonucu olacaktır

enter image description here

MS SQL 2008 R2

+0

Hangi SQL sürümünü? –

cevap

6

Bildiğim kadarıyla anladığım kadarıyla, sayı istiyorum devam eden gruplarınız

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

Evet bunu denedim ve rütbe ve bana yakın bir şey verdi, ama ihtiyacım olanı değil. Sıralı düzende 5'leri ve 6'ları etiketledi. Aynı numara olmak için 6s tekrar istiyorum. – user2069895

+0

onaylı yanıtı kontrol edin –

+0

Tam olarak ne aradığım içgörü ve yardım için çok teşekkür ederim !!!!!! Güncellenen cevap çözümdü. Tekrar teşekkürler! – user2069895

İlgili konular