Выбор одного и того же списка столбцов для разных условий

Вопрос:

У меня есть хранимая процедура, возвращающая одинаковые столбцы в соответствии с разными параметрами.

например;

if name is not null
select a,b,c,d,e,f
from table1, table2, table3
where .....

if age is not null
select a,b,c,d,e,f
from table1, table2, table3,table4
where .....

if city is not null
select a,b,c,d,e,f
from table1,table3,table5
where .....

Проблема в том, когда я хочу добавить/опустить столбцы, мне нужно будет сделать это для каждого выбора.

Есть ли способ сохранить список столбцов один раз и использовать его для разных условий?

Лучший ответ:

Вы можете использовать динамический SQL

DECLARE @sql NVARCHAR(4000)
SET @sql = '
select a,b,c,d,e,f
from table1,table3,table5
where 1=1 '

IF @name IS NOT NULL
  SET @sql = @sql + ' AND name = ' + @city
IF @age IS NOT NULL
  SET @sql = @sql + ' AND age = ' + @age
IF @city IS NOT NULL
  SET @sql = @sql + ' AND city = ' + @city


EXEC sp_executesql @sql

Ответ №1

Попробуй это

SELECT -- select list here
.....
WHERE
name= CASE WHEN @name IS NULL THEN name ELSE @name END
AND age= CASE WHEN @age IS NULL THEN age ELSE @age END
AND city= CASE WHEN @city IS NULL THEN city ELSE @city END

Оцените статью
TechArks.Ru
Добавить комментарий