If you prefer a one-pass solution over a three-pass solution, try thisDECLARE @Sample TABLE ( ITEMITEM VARCHAR(10), AGE_FRM INT, AGE_TO INT )INSERT @SampleVALUES ('ABCD', 10, 20), ('ABCD', 21, 30), ('ABCD', 31, 40), ('ABCD', 0, 0), ('ABCD', 0, 0), ('PQRS', 0, 0), ('PQRS', 0, 0), ('PQRS', 0, 0), ('PQRS', 0, 0), ('PQRS', 0, 0)DECLARE @ItemItem VARCHAR(10) = 'ABCD', @Age INT = 45-- SwePesoSELECT ItemItem, ISNULL(MAX(AgeFrom), 0) AS Age_Frm, ISNULL(MIN(AgeTo), 0) AS Age_ToFROM ( SELECT ItemItem, CASE WHEN @Age BETWEEN Age_Frm AND Age_To THEN Age_Frm ELSE MIN(NULLIF(Age_Frm, 0)) OVER (PARTITION BY ItemItem) END AS AgeFrom, CASE WHEN @Age BETWEEN Age_Frm AND Age_To THEN Age_To ELSE MAX(NULLIF(Age_To, 0)) OVER (PARTITION BY ItemItem) END AS AgeTo FROM @Sample WHERE ItemItem = @ItemItem ) AS dGROUP BY ItemItem
N 56°04'39.26"E 12°55'05.63"