2013-08-13 4 views
5

मेरे पास कुछ डेटा है और क्रमशः प्रत्येक पंक्ति को संख्या में सक्षम करने में सक्षम होना चाहते हैं, लेकिन समान प्रकार के साथ पंक्तियां, समान संख्या को संख्या दें, और जब यह हो एक अलग प्रकार संख्या जारी रखें। केवल 5 और 6 प्रकार होंगे, आईडी वास्तव में abc123 से अधिक जटिल है। मैं पद की कोशिश की है, लेकिन मैं दो अलग-अलग पंक्ति में गिना जाता है पाने के लिए लग रहे हैं - 1 2 2 3 4 के बजाय उदाहरण में यह 1 1 2 2टी-एसक्यूएल पंक्ति संख्या का उपयोग करें, लेकिन डुप्लिकेट पंक्तियों पर, उसी नंबर का उपयोग करें

मूल छवि

enter image description here

घने रैंक परिणाम होगा

enter image description here

एमएस एसक्यूएल 2008 R2

+0

एसक्यूएल का कौन सा संस्करण? –

उत्तर

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

हाँ मैंने कोशिश की और रैंक और यह मुझे कुछ करीब दे दिया, लेकिन मुझे जो चाहिए वह नहीं। इसने अनुक्रमिक क्रम में 5 एस के साथ-साथ 6 एस लेबल किया। मैं वही संख्या होने के लिए 6s दोहराना चाहता हूं। – user2069895

+0

अद्यतन उत्तर –

+0

जांचें यह वही है जो मैं आपकी अंतर्दृष्टि और सहायता के लिए बहुत बहुत धन्यवाद देता हूं !!!!!! अद्यतन उत्तर समाधान था। एक बार फिर धन्यवाद! – user2069895

संबंधित मुद्दे