SQL SERVER 把数据表转换为XML

SQL查出来的数据格式为
BldNo RoomNo
A001 Rm001
A001 Rm002
A002 Rm003
A002 Rm004

希望用SQL Server的for xml path功能直接转换成如下格式(按BldId分组),不知道能不能实现?要怎么搞?:

 <myxml>
  <tjrooms>
    <build bldid="A001" checked="true">
      <roomid>Rm001</roomid>
      <roomid>Rm002</roomid>
    </build>
           <build bldid="A002" checked="true">
                <roomid>Rm003</roomid>
                <roomid>Rm004</roomid>
    </build>
         <myxml/>
  <tjrooms/>

看上去程序实现更靠谱些

可以直接用程序来直接拼成一个xml文件

或者用gridview另存为xml

你从数据库里面搜索出来是一个DataTable
直接调用DaTaTable的WriteXml方法 可以直接得到一个XML 不过要形成你显示的这种属性还需要在代码里面处理一下

直接在查询分析器中执行SQL,然后在输出结果集中全选,右键,应该是可以导出XML的吧。

你的结果里面开头,然后这个语法结构都不对。首先开闭的顺序不对, 其次< tjrooms /> < myxml />的闭合斜杠应该是在tag名字前。
不知道你为什么要两层,现在实现了一层。查询语句和结果如下:

SELECT BldNo AS '@bldid'
    , 'true' AS '@checked'
    ,(
        SELECT RoomNo AS 'roomid'
        FROM tjrooms
        WHERE (BldNo = T1.BldNo)
        FOR XML PATH (''), TYPE
    )
FROM tjrooms T1
GROUP BY BldNo
FOR XML PATH ('build'), root('tjrooms')
<tjrooms>
    <build bldid="A001" checked="true">
        <roomid>Rm001</roomid>
        <roomid>Rm002</roomid>
    </build>
    <build bldid="A002" checked="true">
        <roomid>Rm003</roomid>
        <roomid>Rm004</roomid>
    </build>
</tjrooms>