读书人

【急需!多谢】成绩表 输出的每位学生

发布时间: 2012-12-15 15:16:03 作者: rapoo

【急需!谢谢】成绩表 输出的每位学生对应的成绩 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格式的资料。能否提供下

读书人网 >SQL Server

热点推荐