Anda dapat mencoba ini.
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
;
Anda tidak menunjukkan bagaimana Anda ingin menangani kasus di mana beberapa baris dalam grup LinkedID mewakili yang paling dekat dengan tanggal target. Solusi ini hanya akan menyertakan satu baris Dan, dalam hal ini Anda tidak dapat menjamin baris mana dari beberapa nilai valid yang disertakan.
Anda dapat mengubah ROW_NUMBER() dengan RANK() dalam kueri jika Anda ingin menyertakan semua baris yang mewakili nilai terdekat.