有表如下:
sql@kokooa>select * from test026;
ID NAME SUBJECT SCORE
---------- -------------------- -------------------- ----------
1 jim 语文 88
1 jim 数学 84
1 jim 英语 90
2 kate 语文 86
2 kate 数学 76
2 kate 英语 96
想得到如下效果:
学生编号 学生姓名 语文 数学 英语
方法:
1.自连接:(这是自连接很典型的用处 应当熟练掌握)
sql@kokooa> select a.id,a.name,a.score as "语文",b.score as "数学",c.score as "英语"
from test026 a,test026 b,test026 c
where a.id=b.id and a.subject='语文' and b.subject='数学'
and a.id=c.id and c.subject='英语';
ID NAME 语文 数学 英语
---------- -------------------- ---------- ---------- ----------
1 jim 88 84 90
2 kate 86 76 96
2 使用case when
sql@kokooa>select id,name,
sum(case when subject='语文' then score end) as "语文",
sum(case when subject='数学' then score end) as "数学",
sum(case when subject='英语' then score end) as "英语"
from test026
group by id,name
ID NAME 语文 数学 英语
---------- -------------------- ---------- ---------- ----------
1 jim 88 84 90
2 kate 86 76 96
3 decode
select max(id) as id,name,
max(decode(subject,'数学',score)) as "数学",
max(decode(subject,'语文',score)) as "语文",
max(decode(subject,'英语',score)) as "英语"
from test026
group by name
ID NAME 数学 语文 英语
---------- -------------------- ---------- ---------- ----------
1 jim 84 88 90
2 kate 76 86 96
分享到:
相关推荐
本文将详细介绍如何在Oracle中使用DECODE和CASE语句进行横表转纵表的操作。 首先,我们需要理解横表和纵表的概念。横表是列数多行数少的数据结构,而纵表则是行数多列数少,通常用于将具有相同类别但不同属性的数据...
在数据库管理和SQL编程中,`DECODE`函数和`CASE WHEN`语句是两种非常重要的逻辑判断工具,它们常用于处理条件分支和数据转换。在这篇文章中,我们将深入探讨这两种方法的用途、区别以及如何巧妙地运用它们。 首先,...
在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...
Oracle数据库中的`Decode()`函数和`CASE`语句都是用于条件判断和数据转换的重要工具,它们各有特点,适用场景也有所不同。以下是对这两个功能的详细比较。 首先,`Decode()`函数是一个简化的条件表达式,它允许你在...
在实际工作中,你可能还需要结合其他SQL函数,如CASE WHEN或NVL,来进一步增强DECODE的功能。例如,当你需要处理可能的NULL值时,NVL函数可以提供一个默认值,防止因NULL而导致的结果异常。 总之,Oracle的DECODE...
`DECODE`函数和`CASE-WHEN`语句都是实现这一目标的有效工具。根据实际的业务需求和性能考虑,可以选择合适的方法进行应用。在编写SQL时,确保理解并充分利用这些高级功能,可以提升代码的可读性和执行效率。希望本文...
Oracle的CASE WHEN语句是SQL查询中的一个非常重要的条件判断工具,它允许你在单个查询中根据不同的条件执行不同的操作。CASE WHEN语句有两种主要形式:简单CASE和搜索CASE。 **1. 简单CASE函数** 简单CASE主要用于...
在Oracle数据库中,`DECODE`函数是一种非常实用的条件判断函数,其功能类似于编程语言中的`IF`语句。通过比较输入值与一系列预设值,该函数能够根据匹配情况返回相应的结果。 #### 二、DECODE函数的基本语法 `...
为了简化这一过程,我们可以利用Oracle SQL的内置函数,如DECODE和CASE WHEN,直接在数据库层面进行处理。 首先,尝试使用DECODE函数。DECODE函数允许我们根据指定的条件返回不同的值。例如,DECODE(ZY_TYPE, '国家...
在 Oracle 中,通常使用 decode 或者 case 函数与聚合函数联合实现列转行功能。但是,这种方法存在一些缺陷,例如性能问题和数据重复访问问题。在本文中,我们将介绍一种新的解决方案,来解决 Oracle 列转行问题。 ...
通过以上示例可以看出,尽管`DECODE`函数在复杂组合条件下的统计查询中可能存在一定的局限性,但通过巧妙的设计和应用,仍然能够有效地满足大多数业务场景的需求。此外,这种方式对于生成所谓的“中国式报表”(即...
在Oracle数据库管理中,数据字典是一个非常重要的工具,它能够帮助我们理解数据库结构、表定义以及列属性等详细信息。本篇文章将介绍如何从Oracle数据库中利用COMMENT生成Excel格式的数据字典。 #### 一、Oracle...
### ORACLE转DB2对照全解 #### 一、Oracle SQL PL与DB2 inline SQL PL对比 本章节主要介绍Oracle SQL PL与DB2 inline SQL PL之间的对比,包括但不限于存储过程、触发器、用户定义函数(UDF)、条件语句及流程控制...
Oracle 提供了两种函数来实现条件选择,即 CASE 函数和 DECODE 函数。CASE 函数可以根据条件选择不同的值,DECODE 函数可以根据条件选择不同的值或表达式。 示例: ```sql SELECT t.ename, CASE t.deptno WHEN ...
Oracle数据库是世界上最广泛使用的数据库系统之一,其强大的功能和丰富的内置函数是其核心优势之一。在Oracle中,函数用于处理各种类型的数据,包括数学运算、字符串处理、日期时间操作、逻辑判断等。以下是对...
在Oracle SQL中,行列转换是一种常见的数据操作需求,主要用于将数据表中的行转换为列,或将列转换为行,以此来满足不同的数据展示或分析需求。这种转换在处理多维度数据、汇总数据或是进行复杂查询时特别有用。下面...
MySql 中的 CASE WHEN 语句可以替换 DECODE 函数。MySql 中的 TEXT 等同于 Oracle 中的 LONG 函数。 13. 日期函数 MySql 中的 EXTRACT 函数可以提取日期的年、月、日等信息,而 Oracle 需要使用 TO_CHAR 函数来...