sql >> Databasteknik >  >> RDS >> Sqlserver

CTE för att få alla barn (ättlingar) till en förälder

Detta borde göra det:

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

Och här är den uppdaterade SQL Fiddle.

Kolla också in den här länken för hjälp med CTE... De är definitivt bra att veta:

Hoppas detta gör susen!



  1. Spring Batch - Det går inte att skapa metadatatabeller på Postgres och ladda faktiska data till mysql

  2. Hur man får året från en dejt i T-SQL

  3. Oracle kopiera data till en annan tabell

  4. Hur man kombinerar datum från ett fält med tid från ett annat fält - MS SQL Server