Something like this should work:
WITH cteSortedData As
(
SELECT
ItemCode,
Date,
Amount,
ClientID,
ROW_NUMBER() OVER (PARTITION BY ClientID, ItemCode ORDER BY Date DESC) As RN
FROM
YourTable
)
SELECT
ItemCode,
MAX(CASE RN WHEN 1 THEN Date ELSE Null END) As Date,
MAX(CASE RN WHEN 1 THEN Amount ELSE Null END) As Amount,
MAX(CASE RN WHEN 2 THEN Date ELSE Null END) As LastPurchase,
MAX(CASE RN WHEN 2 THEN Amount ELSE Null END) As LastAmount,
ClientID
FROM
cteSortedData
WHERE
RN In (1, 2)
GROUP BY
ItemCode,
ClientID
;