Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

प्रत्येक के नीचे स्वतंत्र रूप से आदेशित चाइल्ड पंक्तियों के साथ अवरोही तिथि के अनुसार मूल पंक्तियों को क्रमित करना

ओलंपिक देखना - बस अपनी पोस्ट को स्किम्ड किया - ऐसा लगता है कि आप प्रत्येक स्तर (रूट और एक स्तर में) पर सॉर्ट को नियंत्रित करना चाहते हैं, और सुनिश्चित करें कि डेटा सीधे अपने माता-पिता के नीचे बच्चों के साथ लौटाया जाता है (ताकि आप पेज कर सकें जानकारी...)। हम हर समय ऐसा करते हैं। आप order by . द्वारा जोड़ सकते हैं प्रत्येक आंतरिक क्वेरी के लिए और एक sort . बनाएं कॉलम। मैंने थोड़ा अलग उदाहरण दिया है जो आपके लिए अपनी परिस्थिति पर लागू करना आसान होना चाहिए। मैंने मूल आरोही और स्तर एक को अवरोही क्रम में क्रमबद्ध किया ताकि यह स्पष्ट किया जा सके कि आप प्रत्येक भाग को कैसे नियंत्रित कर सकते हैं।

declare @tbl table (id int, parent int, name varchar(10))

insert into @tbl (id, parent, name)
values (1, null, 'def'), (2, 1, 'this'), (3, 1, 'is'), (4, 1, 'a'), (5, 1, 'test'),
       (6, null, 'abc'), (7, 6, 'this'), (8, 6, 'is'), (9, 6, 'another'), (10, 6, 'test')

;with cte (id, parent, name, sort) as (
  select id, parent, name, cast(right('0000' + cast(row_number() over (order by name) as varchar(4)), 4) as varchar(1024))
  from   @tbl
  where  parent is null

  union all

  select t.id, t.parent, t.name, cast(cte.sort + right('0000' + cast(row_number() over (order by t.name desc) as varchar(4)), 4) as varchar(1024))
  from   @tbl t inner join cte on t.parent = cte.id
)
select * from cte
order by sort

यह इन परिणामों को उत्पन्न करता है:

id    parent    name     sort
----  --------  -------  ----------
6     NULL      abc      0001
7     6         this     00010001
10    6         test     00010002
8     6         is       00010003
9     6         another  00010004
1     NULL      def      0002
2     1         this     00020001
5     1         test     00020002
3     1         is       00020003
4     1         a        00020004

आप देख सकते हैं कि रूट नोड्स आरोही क्रम में हैं और आंतरिक नोड्स अवरोही क्रम में हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक संग्रहीत कार्यविधि (.NET) पर तालिका मान पैरामीटर के लिए रिक्त सूची या शून्य मान को बाध्य करना

  2. एसक्यूएल सर्वर में एक फ़ंक्शन लिखना

  3. SQL सर्वर (T-SQL) में उपयोगकर्ता परिभाषित डेटा प्रकार का नाम बदलें

  4. SQL सर्वर 2008:मेरे पास 1000 टेबल हैं, मुझे यह जानने की जरूरत है कि किस टेबल में डेटा है

  5. त्रुटि 28000:pyodbc के साथ DOMAIN\\user उपयोगकर्ता के लिए लॉगिन विफल रहा