sql >> Database >  >> RDS >> Sqlserver

CTE om alle kinderen (afstammelingen) van een ouder te krijgen

Dit zou het moeten doen:

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

En hier is de bijgewerkte SQL Fiddle.

Bekijk ook deze link voor hulp bij CTE's... Ze zijn zeker goed om te weten:

Ik hoop dat dit het lukt!



  1. 3 manieren om een ​​getal op te maken tot 2 decimalen in Oracle

  2. ODBC-oproep mislukt met opgeslagen procedure - Doorzoek query

  3. Hoe willekeurige parameters naar Oracle-trigger te sturen?

  4. Java-kruistabel - query voor opgestelde instructie