puedes probar esto.
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
;
No indicó cómo desea manejar el caso en el que varias filas en un grupo de LinkedID representan el más cercano a la fecha objetivo. Esta solución solo incluirá una fila y, en este caso, no puede garantizar qué fila de los múltiples valores válidos se incluye.
Puede cambiar ROW_NUMBER() con RANK() en la consulta si desea incluir todas las filas que representan el valor más cercano.