xml - SQL Server XML 路径在根元素上添加周名

标签 xml sql-server-2008

我正在尝试使用 SQL Server 2008 的 FOR XML PATH 功能。但我没有得到预期的输出。

我有一个这样的表:

     EventId EventDesc WeekName
     --------------------------------
     101      A          sunday
     102      B          Monday
     103      C          wednesaday

如何像这样获取 XML 输出:

<Events>
  <sunday>
     <E>
        <NE>
           <EventId>101</EventID>
           <Name>A</Name>
        </NE>
     </E>
   </sunday>
   <Monday>
      <E>
         <NE>
            <EventId>102</EventID>
            <Name>B</Name>
         </NE>
      </E>
   </Monday>
   <Tuesday>
      <E>
         <NE>
            <EventId>103</EventID>
            <Name>C</Name>
         </NE>
      </E>
   </Tuesday>
</Events>

我使用的查询:

select  
    (select 
        [EventID] as ID, 
        [EventDesc] as D
     from 
        TempEvent 
     where 
        WeekName = 'sunday' 
     FOR XML PATH('NE'), Root('E'), type)    
FOR XML PATH ('sunday')

我的问题是,如何获取 XML 输出中每一行的周名?

最佳答案

这不是最好的解决方案(绝对不优雅),因为它使用字符串连接来构建 XML,但它完成了工作。

;WITH CTE as 
(
    SELECT 101 as EventId,      'A' as EventDesc,          'sunday' as WeekName
    UNION ALL SELECT      102 as EventId,      'B' as EventDesc,          'Monday'
    UNION ALL SELECT      103 as EventId,      'C' as EventDesc,          'wednesaday'
)
SELECT '<Events>' +(
SELECT DISTINCT '<' + WeekName +'>' + (SELECT EventId,EventDesc FROM CTE  C2 WHERE C2.WeekName = C1.WeekName FOR XML PATH('NE'),ROOT('E')) + '</' + WeekName +'>'
FROM CTE C1
FOR XML PATH('Events'),TYPE).value('.','NVARCHAR(MAX)') + '</Events>'

关于xml - SQL Server XML 路径在根元素上添加周名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29648736/

相关文章:

tsql - 如何将数据插入到两个表中,而一个依赖于另一个的主键

javascript - 在 HTML 页面中显示 XML 属性

java - hibernate中具有多个模块的构造函数表达式

复杂类型的 XML 架构限制 : Complete Redefinition?

SQL Server - 如何在我的表上查找依赖表?

sql-server-2008 - SQL 程序集与大型 XML 列上复杂查询的应用程序代码

sql - 空间索引提示在 SQL Server 2008 中不起作用?

c# - SQL列加密

php - 如何在PHP中检查它是一个xml文件还是一个json文件

xml - XS型号 : getting model group information