黑马程序员技术交流社区

标题: SQL中如何进行行转列 [打印本页]

作者: 周大俊    时间: 2011-11-2 16:01
标题: SQL中如何进行行转列
有人用到过吗?如何实现,几种方式,通常在什么场合呢,3Q……
作者: 黄威    时间: 2011-11-2 16:16
我也不知道,求回答。
作者: 陈涛    时间: 2011-11-2 16:36
同上,  求解.
作者: DotNet菜鸟    时间: 2011-11-3 18:40
呵呵,这是个有意思的问题,
比如将下面表数据
Name         Course       Score
张三        语文        80
张三        数学        90
张三        英语        78
李四        数学        98
李四        英语        88
王五        数学        100
转换成 下面结构
姓名       数学      英语       语文
李四        98        88        NULL
王五        100        NULL        NULL
张三        90        78        80

下面的SQL是一种解法:
DECLARE @Sql VARCHAR(MAX)
SET @Sql = 'SELECT Name'
SELECT @Sql = @Sql + ',SUM(CASE Course WHEN ''' + Course + ''' THEN Score END) AS ' + Course
FROM 表名 GROUP BY Course
SET @Sql = @Sql + ' FROM 表名 GROUP BY Name'
EXEC(@Sql)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2