我试图找到每个ID之间的最小年限差异。例如:
我有这个数据。
ID year
1 2001
1 2001
2 2003
2 2004
2 2010
3 2000
我想得到这样的结果
ID year
1 0
2 1
3 0
你可以使用 LEFT JOIN
SELECT Id,
ISNULL(MIN(Def), 0) [Year]
FROM
(
SELECT T.Id,
TT.Year - T.Year Def
FROM Data T
LEFT JOIN Data TT ON T.Id = TT.Id AND T.Year < TT.Year
) T
GROUP BY Id;
您可以使用 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<>提琴。