आप इसे आजमा सकते हैं।
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
;
आपने यह नहीं बताया कि आप उस मामले को कैसे संभालना चाहते हैं जहां एक LinkedID समूह में एकाधिक पंक्तियां लक्ष्य तिथि के निकटतम प्रतिनिधित्व करती हैं। इस समाधान में केवल एक पंक्ति शामिल होगी और, इस मामले में आप गारंटी नहीं दे सकते कि एकाधिक मान्य मानों की कौन सी पंक्ति शामिल है।
यदि आप उन सभी पंक्तियों को शामिल करना चाहते हैं जो निकटतम मान का प्रतिनिधित्व करती हैं, तो आप क्वेरी में ROW_NUMBER() को RANK() से बदल सकते हैं।