[英]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.