/ / टी-एसक्यूएल: Row_number () समूह - एसक्यूएल, एसक्यूएल-सर्वर, tsql द्वारा

टी-एसक्यूएल: Row_number () समूह - एसक्यूएल, एसक्यूएल-सर्वर, tsql द्वारा

मैं SQL Server 2008 R2 का उपयोग कर रहा हूं और नीचे एक संरचना है:

create table #temp( deptid int, regionid int)

insert into #temp
select 15000, 50
union
select 15100, 51
union
select 15200, 50
union
select 15300, 52
union
select 15400, 50
union
select 15500, 51
union
select 15600, 52

select deptid, regionid, RANK() OVER(PARTITION BY regionid ORDER BY deptid)       AS "RANK",
ROW_NUMBER() OVER(PARTITION BY regionid ORDER BY deptid) AS "ROW_NUMBER",
DENSE_RANK() OVER(PARTITION BY regionid ORDER BY deptid) AS "DENSE_RANK"
from #temp

drop table #temp

और वर्तमान में आउटपुट नीचे जैसा है:

deptid  regionid    RANK    ROW_NUMBER  DENSE_RANK
--------------------------------------------------
15000   50          1       1           1
15200   50          2       2           2
15400   50          3       3           3
15100   51          1       1           1
15500   51          2       2           2
15300   52          1       1           1
15600   52          2       2           2

हालांकि मेरी आवश्यकता है row_number ऊपर regionid कॉलम लेकिन समूह द्वारा और पंक्ति से पंक्तिबद्ध नहीं है। बेहतर व्याख्या करने के लिए, नीचे मेरा वांछित परिणाम सेट है।

deptid  regionid    RN
-----------------------
15000   50          1
15200   50          1
15400   50          1
15100   51          2
15500   51          2
15300   52          3
15600   52          3

अगर मेरा प्रश्न अस्पष्ट है तो कृपया मुझे बताएं। धन्यवाद।

उत्तर:

जवाब के लिए 3 № 1

उपयोग dense_rank() over (order by regionid) अपेक्षित परिणाम प्राप्त करने के लिए।

select deptid, regionid,
DENSE_RANK() OVER( ORDER BY regionid) AS "DENSE_RANK"
from #temp

रैंक / row_number विंडो फ़ंक्शन के भीतर विभाजन विभाजन के भीतर संख्या असाइन करेगा, इसलिए आपको क्षेत्रीय पर ऑर्डर करने के लिए क्षेत्रीय पर विभाजन का उपयोग करने की आवश्यकता नहीं है।