【问题标题】:CTE and Hierarchical XML ResultCTE 和分层 XML 结果
【发布时间】:2010-10-22 08:47:07
【问题描述】:

嘿,

我有一个简单的 CTE,它带有项目的分层列表(父/子关系)。如何在保留层次结构的同时使用“FOR XML”sql 语法将其转换为 XML?

谢谢, 埃斯彭

【问题讨论】:

标签: sql-server xml sql-server-2008


【解决方案1】:

要构建层次结构,您需要以模仿您尝试构建的层次结构的方式“堆叠”查询。如果您只使用一个表或 CTE 来构建您的 XML,您需要尝试在 sql 调用中使“父”元素不同。看看我在下面选择父级时如何使用 distinct

例子:

use tempdb
GO
IF OBJECT_ID('tempdb..#ParentChild')IS NOT NULL DROP TABLE #ParentChild
CREATE TABLE #ParentChild(
ID              int identity(1,1),
ParentID        int,
ParentName      varchar(25),
ChildName       varchar(25));

Insert Into #ParentChild
Values(1,'John','Mike');

Insert Into #ParentChild
Values(1,'John','Russ');

Insert Into #ParentChild
Values(1,'John','Stan');

Select 
    pc.ParentName AS '@parent',
    (Select 
        p.ChildName as '@child'
     From #ParentChild p
     Where p.ParentID = pc.ParentID
     FOR XML PATH('children'),TYPE)
From (Select Distinct ParentID,ParentName
      From #ParentChild) pc
FOR XML PATH('parent'),TYPE

DROP TABLE #ParentChild;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    相关资源
    最近更新 更多