已知:成绩表
Name    Course  Score
张三 物理 70
张三 化学 80
李四 地理 78
李四 物理 88
王五 物理 67
王五 化学 89求:能够得出以下结果的SQL语句结果一(输出格式):<row name="张三">
  <Name>
    <Course>物理</Course>
    <Score>70</Score>
    <Course>化学</Course>
    <Score>80</Score>
  </Name>
</row>
<row name="李四">
  <Name>
    <Course>地理</Course>
    <Score>78</Score>
    <Course>物理</Course>
    <Score>88</Score>
  </Name>
</row>
<row name="王五">
  <Name>
    <Course>物理</Course>
    <Score>67</Score>
    <Course>化学</Course>
    <Score>89</Score>
  </Name>
</row>结果二:
<row name="张三">
  <Name>
    <物理>70</物理>
    <化学>80</化学>
  </Name>
</row>
<row name="李四">
  <Name>
    <地理>78</地理>
    <物理>88</物理>
  </Name>
</row>
<row name="王五">
  <Name>
    <物理>67</物理>
    <化学>89</化学>
  </Name>
</row>

解决方案 »

  1.   

    row 属性中有name了 还要个name元素干嘛啊
    结果1DECLARE @tb TABLE(NAME VARCHAR(20),Course VARCHAR(20),Score INT)INSERT INTO @tb
    select '张三','物理', 70 union all
    select '张三','化学' ,80 union all
    select '李四', '地理', 78 union all
    select '李四', '物理' ,88 union all
    select '王五', '物理', 67 union all
    select '王五', '化学', 89DECLARE @str NVARCHAR(4000)=''
    SELECT name+xmlStr+e FROM (
    SELECT name='<row NAME='''+NAME+'''><Name>',xmlStr=(SELECT Course,Score FROM @tb WHERE t1.NAME=NAME FOR XML PATH('')),
    e='</Name></row>'
    FROM  @tb t1
    GROUP BY t1.NAME

    ) t
    /*
    ------------------------------------------------------------------------------------------------------------------------
    <row NAME='李四'><Name><Course>地理</Course><Score>78</Score><Course>物理</Course><Score>88</Score></Name></row>
    <row NAME='王五'><Name><Course>物理</Course><Score>67</Score><Course>化学</Course><Score>89</Score></Name></row>
    <row NAME='张三'><Name><Course>物理</Course><Score>70</Score><Course>化学</Course><Score>80</Score></Name></row>(3 行受影响)*/
      

  2.   


    可是这样不是我需要的格式啊,你输出的结果是三行,我要的是如下格式的:<row name="张三">
       <Name>
         <Course>物理</Course>
         <Score>70</Score>
         <Course>化学</Course>
         <Score>80</Score>
       </Name>
     </row>
      

  3.   

    在程序里操作xml吧,sql很难实现。
      

  4.   

    select * from @tb for xml raw
      

  5.   


    对对,我现在才发现,应该要在XML里面操作。可问题是我不知道怎么操作,能否提供一个例子给我,或者给我示范下怎么操作?
      

  6.   

    你用什么语言编程?c#操作xml的资料网上多的是。
      

  7.   


    就是C#..应该是我啥都不懂把。我网上看到的貌似没有发现关于对dataset数据进行新架构设置而输出XML格式的资料。能否提供下