Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

CTE, um alle Kinder (Nachkommen) eines Elternteils zu erhalten

Das sollte es tun:

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

Und hier ist die aktualisierte SQL Fiddle.

Sehen Sie sich auch diesen Link an, um Hilfe zu CTEs zu erhalten... Sie sind auf jeden Fall gut zu wissen:

Hoffe das reicht!