数据库行列反转问题详解!

 时间:2026-02-14 07:14:55

1、创建一个用户表:脚本如下

create table student(    id    number        primary key,    name    varchar2(10),    course    varchar2(10),    score    number(4,2))

2、插入测试数据:脚本如下

insert into student values(1,'张三','JAVA',90);insert into student values(2,'张三','C',95);insert into student values(3,'赵六','JAVA',85);insert into student values(4,'赵六','C',70);

3、查询表的数据显示效果如图:

ID    NAME    COURSE        SCORE--------------------------------------1     张三          JAVA             902     张三          C                   953     赵六          JAVA             854     赵六          C                   70

数据库行列反转问题详解!

4、方法一:

使用如下语句查询:

select name,sum(decode(course,'JAVA',score)) JAVA,sum(decode(course,'C',score)) Cfrom studentgroup by name;

效果如下:

NAME    JAVA    C--------------------张三        90       95赵六        85       70

数据库行列反转问题详解!

5、方法二:

select name,sum(case when course='JAVA' then score else 0 end) as java,sum(case when course='C' then score else 0 end) as Cfrom studentgroup by name;

效果同上

6、方法三:

select t.name,sum(t.JAVA) java,sum(t.C) cfrom (  select name,case when course='JAVA' then score else 0 end java,                                 case when course='C' then score else 0 end C            from student) tgroup by name;

效果同上

  • Tomcat监控-JConsole
  • 如何远程操作新装的AIX7.1
  • 自定义js文件
  • PLSQL Developer怎么设置不执行时保存
  • 一零告诉你如何在xftp图形化界面管理服务器
  • 热门搜索
    我的世界怎么建别墅 徐晃怎么死的 自闭症怎么治疗 生殖器疱疹怎么治 怎么设置电脑自动关机 饼状图怎么做 危险期怎么算 碟仙怎么玩 怎么查询银行卡卡号 婴儿流鼻涕怎么办