Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在根元素上添加weekname的SQL Server XML路径_Xml_Sql Server 2008 - Fatal编程技术网

在根元素上添加weekname的SQL Server XML路径

在根元素上添加weekname的SQL Server XML路径,xml,sql-server-2008,Xml,Sql Server 2008,我正在尝试SQLServer2008的XML路径特性。但是我没有得到我期望的结果 我有一张这样的桌子: EventId EventDesc WeekName -------------------------------- 101 A sunday 102 B Monday 103 C wednesaday <Events> <sunday

我正在尝试SQLServer2008的XML路径特性。但是我没有得到我期望的结果

我有一张这样的桌子:

     EventId EventDesc WeekName
     --------------------------------
     101      A          sunday
     102      B          Monday
     103      C          wednesaday
<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>
如何以XML格式获取输出,如下所示:

     EventId EventDesc WeekName
     --------------------------------
     101      A          sunday
     102      B          Monday
     103      C          wednesaday
<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>

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

这不是最好的解决方案,绝对不是优雅的,因为它使用字符串连接来构建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>'