欢迎光临
我们一直在努力

sql server行转列问题终极解决_数据库技巧

建站超值云服务器,限时71元/月

主要应用case语句来解决行转列的问题


行转列问题主要分为两类


1)简单的行转列问题:


示例表:


id  sid           course  result


1   2005001 语文     80.0
2   2005001 数学     90.0
3   2005001 英语     80.0
4   2005002 语文     56.0
5   2005002 数学     69.0
6   2005002 英语     89.0


执行


select sid,语文=isnull(sum(case course when 语文 then result end),0),
   数学=isnull(sum(case course when 数学 then result end),0),
   英语=isnull(sum(case course when 英语 then result end),0)
   from result
   group by sid
   order by sid


 


得出结果


sid           语文 数学 英语


2005001 80.0  90.0  80.0
2005002 56.0  69.0  89.0


 


2)较为复杂的行转列


表1:course


id name


1 语文
2 数学
3 英语



表2:result


id sid          course  result


1 2005001 语文      80.0
2 2005001 数学      90.0
3 2005001 英语      80.0
4 2005002 语文      56.0
5 2005002 数学      69.0
6 2005002 英语      89.0


 


declare @sql varchar(8000)
set @sql=select sid
select @sql=@sql+,+course.name+=isnull(sum(case course when +course.name+ then result end),0)
 from course order by id
set @sql=@sql+ from result group by sid order by sid
print @sql
exec(@sql)


 


得出结果


sid           语文 数学 英语


2005001 80.0  90.0  80.0
2005002 56.0  69.0  89.0


http://blog.csdn.net/tthxqttzln/archive/2007/02/02/1500825.aspx

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » sql server行转列问题终极解决_数据库技巧
分享到: 更多 (0)