请问下, 在SQL Server 2005 或 2008SELECT * 
FROM Table1
FOR XML AUTO, Root('root')将显示:<root>
  <XX/>
  <XXX/>
</root>目标:<root name='AA' email='bb'>
  <XX/>
  <XXX/>
</root>即给root 节点加属性,怎么加啊???

解决方案 »

  1.   

    EXPLICIT 需要 UNION, 那就需要两次 SELECT 对吗?如果Table非常大的话,那就浪费了而且EXPLICIT 我也不知道怎么加根节点属性
      

  2.   

    给你变相实现一下行不
    IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1
    IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2
    GO
    CREATE TABLE T1(COL1 INT,COL2 VARCHAR(50))
    INSERT INTO T1
    SELECT 1,'A' UNION SELECT 2,'B' UNION SELECT 3,'C'SELECT *
    FROM 
    (SELECT 'X' 'COL3','Y' 'COL4') [ROOT]
    RIGHT JOIN
    (
    SELECT T1.COL1,T1.COL2 
    FROM T1) T2 ON 1=1 
    FOR XML AUTO
    /*
    <ROOT COL3="X" COL4="Y"><T2 COL1="1" COL2="A"/><T2 COL1="2" COL2="B"/><T2 COL1="3" COL2="C"/></ROOT>
    */
      

  3.   

    XML我也不熟,不知道AUTO能不能给ROOT加属性
      

  4.   

    SQLServer2005 XML在T-SQL查询中的典型应用
    http://topic.csdn.net/u/20081107/17/68aaf5a9-c596-4ab5-ae18-f3370b2ab35b.html