Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да получите йерархичното ниво на тази заявка

Трябва да добавите колона, наречена Level (или както искате да го наречете) - както към "котвата" SELECT, така и към рекурсивната част на вашия CTE - така:

WITH CategoryRec AS 
(
    SELECT Id, Parentid, Name, 1 AS 'Level'
    FROM dbo.Category

    UNION ALL

    SELECT cr.Id, c.Parentid, cr.Name, cr.Level + 1 
    FROM CategoryRec AS cr 
    INNER JOIN dbo.Category AS c ON cr.Parentid = c.Id
    WHERE c.Parentid IS NOT NULL
)
SELECT DISTINCT Id, Parentid, Name, Level
FROM  CategoryRec


  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 Server 2008 R2

  2. Запитване до таблица на SQL Server 2008 за намиране на стойности в колона, съдържаща Unicode знаци

  3. Извличане на данни от SQL сървър 2008r2 с помощта на winforms

  4. SQL Server – Дисектирайте вътрешните елементи на sp_spaceused

  5. Присъединяването на множество таблици връща стойност NULL