Звучит так, будто им нужна возможность возвращать только разрешенные поля, что означает, что количество возвращаемых полей также должно быть динамическим. Это будет работать с 2 переменными. Что-то большее, чем это, будет сбивать с толку.
IF (selectField1 = true AND selectField2 = true)
BEGIN
SELECT Field1, Field2
FROM Table
END
ELSE IF (selectField1 = true)
BEGIN
SELECT Field1
FROM Table
END
ELSE IF (selectField2 = true)
BEGIN
SELECT Field2
FROM Table
END
Динамический SQL поможет с коэффициентами. В этом примере предполагается, что по крайней мере 1 столбец имеет значение true.
DECLARE @sql varchar(MAX)
SET @sql = 'SELECT '
IF (selectField1 = true)
BEGIN
SET @sql = @sql + 'Field1, '
END
IF (selectField2 = true)
BEGIN
SET @sql = @sql + 'Field2, '
END
...
-- DROP ', '
@sql = SUBSTRING(@sql, 1, LEN(@sql)-2)
SET @sql = @sql + ' FROM Table'
EXEC(@sql)