você pode tentar isso.
DECLARE @Date DATE = '10/01/2010';
WITH cte AS
(
SELECT ID, LinkedID, ABS(DATEDIFF(DD, @date, DATE)) diff,
ROW_NUMBER() OVER (PARTITION BY LinkedID ORDER BY ABS(DATEDIFF(DD, @date, DATE))) AS SEQUENCE
FROM MyTable
)
SELECT *
FROM cte
WHERE SEQUENCE = 1
ORDER BY ID
;
Você não indicou como deseja lidar com o caso em que várias linhas em um grupo LinkedID representam o mais próximo da data de destino. Esta solução incluirá apenas uma linha e, neste caso, você não pode garantir qual linha dos vários valores válidos está incluída.
Você pode alterar ROW_NUMBER() com RANK() na consulta se quiser incluir todas as linhas que representam o valor mais próximo.