开始使用免费开始使用

将所有可能的父代合并到一个字段中

本章的最后一个任务是:从某个 ID 出发,找出所有可能的父代,并把各代中的 ID 合并到一个字段中。

为此,您将递归搜索所有可能的成员,并把这些信息追加到同一个字段中。您需要使用 CAST() 运算符把多个 ID 合并为字符串。 您将从 ID = 290 开始搜索所有家族成员。表 family 共包含 300 条记录。

本练习是课程的一部分

SQL Server 中的分层与递归查询

查看课程

练习说明

  • 将 290 的 ParentID 设为起点。
  • CASE 运算中,如果 Parent.ID = '',则将 Parent 字段设为当前的 ParentID
  • CASE 运算中,如果 Parent.ID <> '',则在每次迭代中将当前的 Parent 追加上该 Parent ID。
  • 从已定义的 CTE 中选择 NameParent

交互式实操练习

通过完成这段示例代码来试试这个练习。

WITH tree AS (
	SELECT 
  		ID,
  		Name, 
  		ParentID, 
  		CAST('0' AS VARCHAR(MAX)) as Parent
	FROM family
  	-- Initialize the ParentID to 290 
  	WHERE ___ = ___    
    UNION ALL
    SELECT 
  		Next.ID, 
  		Next.Name, 
  		Parent.ID,
    	CAST(CASE WHEN Parent.ID = ''
        	      -- Set the Parent field to the current ParentID
                  THEN(CAST(Next.___ AS VARCHAR(MAX)))
        	 -- Add the ParentID to the current Parent in each iteration
             ELSE(Parent.Parent + ' -> ' + CAST(Next.___ AS VARCHAR(MAX)))
    		 END AS VARCHAR(MAX))
        FROM family AS Next
        	INNER JOIN tree AS Parent 
  			ON Next.ParentID = Parent.ID)
        
-- Select the Name, Parent from tree
SELECT ___, ___
FROM ___;
编辑并运行代码