如何在没有滞后的情况下获得后续行之间的差异
how to get diff between subsequent rows without lag
我有
id value
1 12
1 15
1 17
1 22
1 22
1 23
我需要这样
id value
1 --
1 3
1 2
1 5
1 0
1 1
你能告诉我,如何实现这个吗?
你可以试试下面的-
select id,
value-max(value) over(order by id rows between 1 preceding and 1 preceding) as value
from tablename
您似乎想要 lag()
,我猜这是根据 id
并基于 value
:
的顺序
select t.*,
(value - lag(value) over (partition by id order by value)) as diff
from t
order by value;
就是说,您的示例数据具有完全相同的重复项。这在 SQL table.
中是不寻常的
我有
id value
1 12
1 15
1 17
1 22
1 22
1 23
我需要这样
id value
1 --
1 3
1 2
1 5
1 0
1 1
你能告诉我,如何实现这个吗?
你可以试试下面的-
select id,
value-max(value) over(order by id rows between 1 preceding and 1 preceding) as value
from tablename
您似乎想要 lag()
,我猜这是根据 id
并基于 value
:
select t.*,
(value - lag(value) over (partition by id order by value)) as diff
from t
order by value;
就是说,您的示例数据具有完全相同的重复项。这在 SQL table.
中是不寻常的