Попробуйте это:
;WITH CTE AS (
SELECT [Item id], [purchase date], unitprice,
ROW_NUMBER() OVER(PARTITION BY [Item id] ORDER BY [purchase date] DESC) rn
FROM your_table
)
SELECT [Item id], [purchase date], unitprice
FROM CTE
WHERE rn < 3
Я не уверен, как вы можете рассчитать среднее значение с последними двумя записями, но уверен, что вы можете добавить GROUP BY
к запросу, если вам нужно.
Может быть, что-то подобное:
-- CTE here --
SELECT [Item id], AVG(unitprice)
FROM CTE
WHERE rn < 3
GROUP BY [Item id]