С java, честно говоря, не знаком, но в sql можно формировать динамический запрос в nvarchar и затем запускать его разными способами, к примеру
DECLARE @sql_exec NVARCHAR(4000), @EOL CHAR(2)
SELECT @EOL = CHAR(13) + CHAR(10)
SELECT @sql_exec = 'SELECT 1' + @EOL
-- тут добавить условия
-- формирования динамического запроса
--
SELECT @sql_exec = @sql_exec + 'WHERE 1=1'
-- тут добавить
-- формирование условий выборки
--
-- просмотр сформированного запроса
PRINT @sql_exec
-- выполнение:
EXEC(@sql_exec)