2013年03月05日   码农之路   5,401 次浏览
举个很常见的例子,现有如下表格:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93
李四 语文 74
李四 数学 84
李四 物理 94
想变成如下结果:
姓名 语文 数学 物理
李四 74 84 94
张三 74 83 93
下面这种方法是针对课程字段值不是很多的情况,否则SQL会变得很长
SELECT 姓名, MAX(CASE 课程 WHEN '语文' THEN 分数 ELSE 0 END) 语文, MAX(CASE 课程 WHEN '数学' THEN 分数 ELSE 0 END) 数学, MAX(CASE 课程 WHEN '物理' THEN 分数 ELSE 0 END) 物理 FROM TEST GROUP BY 姓名 |
可以将SQL中的CASE语句用DECODE代替。
那个如果课程字段值非常多时,这个SQL就会变得很长了,这时我们就需写个函数来处理了,具体思路是:循环所有的字段拼出SQL并持行。时间问题,具体函数就不写出来了。
>>> Hello World <<<
这篇内容是否帮助到你了呢?
如果你有任何疑问或有建议留给其他朋友,都可以给我留言。