oracle行变列(多行变成一行/多行合并成一行/多行合并成多列/合并行)

妖狐艹你老母 2022-08-18 03:27 432阅读 0赞

和mysql对比着看:http://blog.csdn.net/rainyspring4540/article/details/50231435

这里是oracle10g的环境

数据库结构如下:

20151209084812684

如果我想将相同名字的成绩显示在同一行,有2中基本展示:

第一种展示(显示在同一行的不同列上)

20151209085340254

其sql如下:

  1. select name ,
  2. max(decode(type,'math',score,0)) as 数学,
  3. max(decode(type,'english',score,0)) as 英语,
  4. max(decode(type,'chinese',score,0)) as 语文
  5. from stu2
  6. group by name

由于这里一个人只对应一科目的成绩,所有你用max和sum是一样的,如果一个人一个科目有多个成绩,这时sum就是求和的意思了,而max就是取最大值,我就不在写案例了,自己注意下就ok

第二中展示(显示在同一行的同一列上)

20151209090438757

sql如下:

  1. select name ,
  2. max(decode(type,'math',score,0)) ||';'||
  3. max(decode(type,'english',score,0)) ||';'||
  4. max(decode(type,'chinese',score,0)) as allScore
  5. from stu2
  6. group by name

如果你熟悉字符串拼接||的用法就能做出更多样式:

样式1:

20151209090827256

发表评论

表情:
评论列表 (有 0 条评论,432人围观)

还没有评论,来说两句吧...

相关阅读