首页 > 解决方案 > SQL查询以查找列的行值之间的最小差异

问题描述

我试图找到每个 ID 的最小年差。例如,

我有这个数据:

ID     year
1      2001
1      2001
2      2003
2      2004
2      2010
3      2000

我想要这个输出:

ID    year
1      0
2      1
3      0

标签: sqlsql-serverdifferenceminimum

解决方案


您可以使用lag()

select id, coalesce(min(year - prev_year), 0)
from (select t.*, lag(year) over (partition by id order by year) as prev_year
      from t
     ) t
group by id;

是一个 db<>fiddle。


推荐阅读