首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

【急需!多谢】成绩表 输出的每位学生对应的成绩 XML 格式

2012-12-15 
【急需!谢谢】成绩表 输出的每位学生对应的成绩XML 格式已知:成绩表NameCourseScore张三物理70张三化学80李

【急需!谢谢】成绩表 输出的每位学生对应的成绩 XML 格式

已知:

成绩表
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>

[最优解释]
row 属性中有name了 还要个name元素干嘛啊
结果1


DECLARE @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'王五','化学', 89

DECLARE @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 行受影响)

*/


[其他解释]
在程序里操作xml吧,sql很难实现。
[其他解释]
select * from @tb for xml raw


[其他解释]

引用:
row 属性中有name了 还要个name元素干嘛啊
结果1
SQL code1234567891011121314151617181920212223242526272829DECLARE @tb TABLE(NAME VARCHAR(20),Course VARCHAR(20),Score INT) INSERT INTO @tbselect  '张三','物理'……


可是这样不是我需要的格式啊,你输出的结果是三行,我要的是如下格式的:

<row name="张三">
   <Name>
     <Course>物理</Course>
     <Score>70</Score>
     <Course>化学</Course>
     <Score>80</Score>
   </Name>
 </row>
[其他解释]
引用:
在程序里操作xml吧,sql很难实现。


对对,我现在才发现,应该要在XML里面操作。可问题是我不知道怎么操作,能否提供一个例子给我,或者给我示范下怎么操作?
[其他解释]
你用什么语言编程?c#操作xml的资料网上多的是。
[其他解释]
引用:
你用什么语言编程?c#操作xml的资料网上多的是。


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

热点排行