繁体   English   中英

SQL创建范围

[英]SQL for creating a range

我有两列的下表

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;

您可以将汇总和分析功能结合在一起,如下所示:

select dept
     , min(term) min_term
     , lead(min(term)) over (order by dept) max_term
  from table
 group by dept;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM