我有一张这样的桌子:
我想根据Product_Order
得出产品之间的日期差,同时考虑ID
。因此,给定ID的Product_Order
的最后一个数字应为NULL。
例如,对于ID
1,我想要这样的日期差:
Date Difference
From 1 to 2 - 4 years
From 2 to 3 - 5 years
假设表名是'test'。尝试-
select a.date - b.date
from test a, test b
where a.id = b.id
and a.product_order < b.product_order
您可以使用窗口函数LEAD()
来获取相同date
的下一个id
值(按product_number
排序,并使用DATEDIFF()
计算差值:
SELECT
t.*,
DATEDIFF(
year,
LEAD([date]) OVER(PARTITION BY id ORDER BY product_order),
[date]
) diff
FROM mytable
这将为您提供多年的差异,这似乎正是您想要的。