See if this example will work for you?CREATE TABLE #tmp (ID2 INT, TYPE CHAR(1));
INSERT INTO #tmp VALUES (1000,'D'),(1050,'A'),(1050,'B'),(1050,'D'),
(1071,'A'),(1071,'B'),(1071,'D');
SELECT
a.*,
CASE WHEN a.Type = 'D' THEN a.ID2 ELSE b.ID2 END AS ID3
FROM
#tmp a
OUTER APPLY
(
SELECT TOP (1) b.ID2
FROM #tmp b
WHERE b.ID2 < a.ID2
ORDER BY ID2 DESC
) b;
DROP TABLE #tmp;