Potresti fare una Stored Procedure con una stringa, che compone la query con i parametri che gli passi.

Una mia di esempio:

codice:
...PROCEDURE [dbo].[p_ListaNews]
(
	@p_IDNews numeric(4)
)
AS
BEGIN
    declare @strQuery varchar(1024)
    set @strQuery = 'SELECT ID,TESTO,DATA_INSERIMENTO FROM STORICO_NEWS	WHERE 1=1'
    
    IF  @p_IDNews IS NOT NULL AND @p_IDNews > 0
    BEGIN
       set @strQuery = @strQuery + ' AND ID=' + CONVERT(VARCHAR, @p_IdNews)      
       set @strQuery = @strQuery + ' ORDER BY DATA_INSERIMENTO DESC'
    END

    EXECUTE(@strQuery)
END