you must do a self join to include in sql query both the most recent row as well as the current row...
Select c.InvNo, c.inStock current, r.InStock Previous
From table c join table r
on r.invNo = c.invNo
And r.AdjustedOn =
(Select Max(AdjustedOn)
From table
Where invNo = c.InvNo
And adjustedOn < c.AdjustedOn)
Where c.InStock >= r.Instock + 10 Or
c.Instock <= r.Instock - 10
This gives you all rows where the change at that point in time, was 10 or more from the previous change, but it includes changes that occurred in the past, before the most recent change. If you want the query to only include the rows representing the most recent change, then add another predicate sub query to the outer sql...
Select c.InvNo, c.inStock current, r.InStock Previous
From table c join table r
on r.invNo = c.invNo
And r.AdjustedOn =
(Select Max(AdjustedOn)
From table
Where invNo = c.InvNo
And adjustedOn < c.AdjustedOn)
Where (c.InStock >= r.Instock + 10 Or
c.Instock <= r.Instock - 10)
And c.AdjustedOn =
(Select Max(AdjustedOn)
From table
Where invNo = c.InvNo)