2013-08-13 45 views
5

Tôi có một số dữ liệu và muốn có thể đánh số từng hàng liên tiếp, nhưng các hàng có cùng loại liên tiếp, số cùng một số và khi một loại khác tiếp tục đánh số. Chỉ có các loại 5 và 6, ID thực sự phức tạp hơn abc123. Tôi đã cố gắng cấp bậc nhưng tôi dường như để có được hai tội hàng khác nhau - trong ví dụ thay vì 1 2 2 3 4 nó sẽ là 1 1 2 2t-SQL Sử dụng số hàng, nhưng trên hàng trùng lặp, sử dụng cùng một số

ảnh gốc

enter image description here

kết quả rank dày đặc

enter image description here

MS SQL 2008 R2

+0

Phiên bản SQL nào? –

Trả lời

6

theo như tôi hiểu, bạn muốn số các nhóm liên tục của bạn

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

Vâng tôi đã cố gắng và xếp hạng và nó đã cho tôi một cái gì đó gần gũi, nhưng không phải những gì tôi cần. Nó dán nhãn 5s theo thứ tự tuần tự, cũng như 6s. Tôi muốn lặp lại 6s để được cùng một số. – user2069895

+0

kiểm tra câu trả lời cập nhật –

+0

Đây chính xác là những gì tôi đang tìm kiếm cảm ơn bạn rất nhiều vì cái nhìn sâu sắc của bạn và giúp đỡ !!!!!! Câu trả lời được cập nhật là giải pháp. Cảm ơn một lần nữa! – user2069895

Các vấn đề liên quan