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

CTE, за да получите всички деца (потомци) на родител

Това трябва да стане:

WITH MyTest as
(
  SELECT P.ProductID, P.ParentID, CAST(P.ProductID AS VarChar(Max)) as Level
  FROM Products P
  WHERE P.ParentID = 0

  UNION ALL

  SELECT P1.ProductID, P1.ParentID, CAST(P1.ProductID AS VarChar(Max)) + ', ' + M.Level
  FROM Products P1  
  INNER JOIN MyTest M
  ON M.ProductID = P1.ParentID
 )
SELECT * From MyTest

А ето и актуализираната SQL Fiddle.

Освен това вижте тази връзка за помощ с CTE... Определено е добре да ги знаете:

Надявам се това да свърши работа!



  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 - Каква е разликата между ЛОКАЛЕН И ГЛОБАЛЕН курсор | Урок за SQL Server / Урок за TSQL

  2. Избройте всички колони за идентичност в база данни на SQL Server:sys.identity_columns

  3. Как да открием и предотвратим неочакван растеж на базата данни на SQL Server TempDB

  4. Как да копирате запис в SQL таблица, но да замените уникалния идентификатор на новия ред?

  5. SQL Server 2016:Създайте таблица