首页 > 数据库 >oracle列转行

oracle列转行

时间:2024-03-12 11:33:05浏览次数:35  
标签:unionselect 转行 张三 Course Score dual oracle sum

转自:https://www.cnblogs.com/Mr_JinRui/archive/2011/05/27/2060109.html

 

oracle 列转行

 

1.新建一个名为TEST表

2.向TEST表中添加数据

INSERT INTO TEST(STUDENT,COURSE,SCORE)
select '张三','语文',78 from dual union
select '张三','数学',87 from dual union
select '张三','英语',82 from dual union
select '张三','物理',90 from dual union
select '李四','语文',65 from dual union
select '李四','数学',77 from dual union
select '李四','英语',65 from dual union
select '李四','物理',85 from dual

表数据如下:

3.列转行

方法··1:

select
    Student,
    sum(decode(Course, '数学', Score)) 数学,
    sum(decode(Course, '物理', Score)) 物理,
    sum(decode(Course, '英语', Score)) 英语,
    sum(decode(Course, '语文', Score)) 语文
from
    TEST
group by Student

方法··2:

select
    Student,
    sum(case Course when '数学' then Score else null end) 数学,
    sum(case Course when '物理' then Score else null end) 物理,
    sum(case Course when '英语' then Score else null end) 英语,
    sum(case Course when '语文' then Score else null end) 语文
from
    TEST
group by Student

效果如下:

注:sum是求和的意思;比如说里面记录里面有两条张三,列转行显示的结果就会是两个张三的结果之和。

标签:unionselect,转行,张三,Course,Score,dual,oracle,sum
From: https://www.cnblogs.com/chengxuyonghu/p/18067932

相关文章

  • Oracle - 那些年使用的emp表和dept表
     那些年在学习编程时,Oracle自带的emp表和dept表,本文进行整理和记录,以便于在今后的学习和工作中作为示例数据。  雇员表(emp)CREATETABLEEMP( EMPNONUMBER(4)NOTNULL,--雇员编号,由四个数字组成。 ENAMEVARCHAR2(10),--雇员姓名,由10个字符组成。 JOBVARCHAR2(......
  • [转帖]Oracle 常规坏块处理方法
    收到业务反馈,查看erp请求时遇到报错,一看居然是坏块。。。-_-|| alert日志中也出现相关报错,但还好只有一个坏块一、有备份的处理方法这一般就非常简单,rman有坏块修复功能Recoverdatafile19block44;如有必要,可同时修复多个文件多个块Recoverdatafile19block44d......
  • ORACLE登录出现“ORA-12560:TNS:协议适配器错误”错误修复
    ORA-12560:TNS:协议适配器错误的问题一般由这3个原因导致,如下:1)Oracle服务异常停止2)Oracle注册表错误3)winOracleclient造成问题原因一【Oracle服务异常停止】,检查orcle服务是否正常启动win+R打开运行窗口,输入“services.msc”,打开服务页面,找到oracleOraDb11g_home1TNSListener......
  • oracle数据库rpm安装
    Oracle19C的安装与配置把19C的安装包传送到我们的虚拟机(Oracle19C)oracle19C默认安装到/opt/目录下,要保证该目录空间足够 rpm-ivhcompat-libstdc++-33-3.2.3-72.el7.x86_64.rpmrpm-ivhoracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm###yum自动解决依赖......
  • oracle 控制文件重建
    3.5 恢复与重建3.5.1恢复控制文件方法控制文件一旦损坏,系统将不能正常工作。受损的控制文件会记录在告警日志中,恢复或重建控制文件必须使系统在NOMOUNT下1)单个文件损坏了:参照多元化章节,通过简单复制解决。2)所有的控制文件丢失:①如果有binary控制文件备份,利用备份恢复控制文......
  • oracle11g awr手动生成快照
    您可以手动生成一个快照,以收集Oracle数据库的AWR(AutomaticWorkloadRepository)数据。请按照以下步骤生成一个快照:登录到Oracle数据库实例所在的服务器。切换到具有适当权限的Oracle用户。打开SQL*Plus或其他OracleSQL客户端。运行以下命令来生成快照:EXECDBM......
  • Navicat 无法连接Oracle / SQLserver
    报  cannotcreateocihandle cannotcreateocienviromentORA-XXXX等;排除用户名密码端口错误原因:Navicat本地的OCI版本与Oracle本地的不匹配查看Oracle本地的OCI版本,将Navicat升级至对应版本解决:下载新的oci进行替换https://www.oracle.com/database/technol......
  • Oracle中的sql hint
    Hint是Oracle数据库提供的一种机制用来告诉优化器按照hint告诉它的方式生成执行计划,是sql优化中常用的一个手段。基于代价的优化器,在绝大多数情况下会选择正确的优化器。但是有时候会选择效率很差的执行计划,使某个语句变得很慢,此时就需要通过hint告诉优化器使用指定的存取路径或......
  • Mysql和Oracle自定义函数区别
    1.Mysql自定义函数dropfunctionifexistsget_date;createfunctionget_date(v_datetimedatetime,v_timevarchar(50))returnsvarchar(50)begin declarev_datevarchar(50); declarecDatevarchar(50); declarebeginDatevarchar(50); setcDate=date_format(......
  • Oracle数据库Date类型查询结果多出“.0“的解决方法
    ​ oracle设置数据库某张表的字段类型为date,数据库存值为 2019-11-2518:51:47格式,但是从数据库查询出来之后格式为  StringstopTime=map.get("stopTime").toString;2019-11-2518:51:47.0,多了个零,不知是毫秒还是纳秒,目前还不知为何,解决办法为转换时间类型或者前端分......