declare @A int= 1 ,@B int= 3 , @C int=20 , @D int=16 INSERTINTO @temp(A,B,C,D) SELECT * FROM ( SELECT 1 As A, 2 AS B, 3 AS C, 4 AS D UNIONSELECT 1 As A, 2 AS B,nullAS C,nullAS D UNIONSELECT 1 As A, 2 AS B, 4 AS C, 5 AS D UNIONSELECT 1 As A, 3 AS B, 2 AS C,nullAS D UNIONSELECT 1 As A, 3 AS B, 2 AS C, 7 AS D UNIONselect 1 As A, 3 AS B,nullAS C,nullAS D ) A SELECT TOP 1 *FROM @temp WHERE (A = @A AND B=@B AND C=@C AND D=@D)OR (A = @A AND B=@B AND C=@C AND D ISNULL)OR (A = @A AND B=@B AND C ISNULLAND D ISNULL)OR (A = @A AND B ISNULLAND C ISNULLAND D ISNULL) orderby D DESC,C DESC,B DESC,A DESC
WITH ListYear AS (SELECT 1913 ASYEAR UNIONALL SELECT lyear.YEAR+ 1 ASYEAR FROM ListYear lyear WHERE lyear.YEAR+ 1 <=YEAR(GetDate()) ) SELECTYEARFROM ListYear ORDERBYYEARDESC; Read More