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

Sql पदानुक्रम आईडी स्तर द्वारा छँटाई

--यह काम करेगा? यह से ट्री को सॉर्ट करने से लिया गया है SQL सर्वर 2008 में अन्य कॉलम

DECLARE @table TABLE (id INT NOT NULL PRIMARY KEY, name NVARCHAR(4000) NOT NULL, path HIERARCHYID)

INSERT
INTO    @table
VALUES  
        (1, 'People', '/'),
        (2, 'Girls', '/1/'),
        (3, 'Boys', '/2/'),
        (4, 'Zoey', '/1/1/'),
        (5, 'Kate', '/1/2/'),
        (6, 'Monica', '/1/3/'),
        (7, 'Mark', '/2/1/'),
        (8, 'David', '/2/2/')

;WITH   q AS
        (
        SELECT  *, HIERARCHYID::Parse('/') AS newpath
        FROM    @table
        WHERE   path = HIERARCHYID::GetRoot()
        UNION ALL
        SELECT  t.*, HIERARCHYID::Parse(q.newpath.ToString() + CAST(ROW_NUMBER() OVER (ORDER BY t.name) AS NVARCHAR(MAX)) + '/')
        FROM    q
        JOIN    @table t
        ON      t.path.IsDescendantOf(q.path) = 1
                AND t.path.GetLevel() = q.path.GetLevel() + 1
        )
SELECT  replicate(convert(nvarchar, '-'), q.path.GetLevel()) + q.name /*+ '(' + q.newpath.ToString() + ')'*/
FROM    q
ORDER BY
        newpath


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं SQL सर्वर में एक विदेशी कुंजी कैसे छोड़ूं?

  2. चालू [प्राथमिक] का क्या अर्थ है?

  3. SQL सर्वर तालिका कॉलम में स्ट्रिंग को कैसे बदलें

  4. TIMEFROMPARTS () SQL सर्वर में उदाहरण (T-SQL)

  5. एसक्यूएल सर्वर से खाली पंक्ति वापस करना संभव है?