Вы можете использовать оконную функцию LEAD()
, чтобы получить следующее значение date
для того же id
(упорядочено по product_number
), и DATEDIFF()
, чтобы вычислить разницу:
SELECT
t.*,
DATEDIFF(
year,
LEAD([date]) OVER(PARTITION BY id ORDER BY product_order),
[date]
) diff
FROM mytable
Это даст вам разницу в годах, которая, кажется, то, что вы ищете.