用于创建范围的 SQL

标签 sql database oracle11g

我的下表有 2 列

Dept   |   Term  

A      |    2010
A      |    2011
B      |    2012
C      |    2013

我想创建最大值和最小值列,以便输出应如下表所示。最小值可以使用 min() 函数并按术语列分组来获得。最大值应该是下一组中的最小值。

Dept   |   min_Term  | max_term

A      |    2010     |  2012
B      |    2012     |  2013
C      |    2013     |  Null

提前感谢您的帮助!

最佳答案

您可以使用lead函数获取下一行的最小项值。

with t1 as (
select dept, min(term) mnterm
from table
group by dept)
, t2 as (select dept, mnterm as min_term, lead(mnterm) over(order by dept) as max_term
         from t1)
select * from t2;

关于用于创建范围的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32590550/

相关文章:

mysql - SQL - 使用另一个表中的数据更新一个表

python - 选择具有最大值的条目并删除指定日期的其他条目

java - 通用 JDBCException : Invalid column type: getCLOB not implemented

mysql - SQL查询多表连接信息

mysql - SQL:删除已排序的行

php - MySQL 将数据插入数据库时​​影响行 -1

sql - 出于重构目的,您能否为 SQL 列名称提供 'second name'?

mysql - 应用触发器后受影响的行数

oracle11g - 无法插入行 ORA-01950 : no privileges on tablespace

java - 在不使用匹配验证的情况下自动恢复 Wildfly 8.2 for Oracle 中的连接