Member 12189753 Ответов: 1

Условно изменить SQL-запрос


У меня есть sql-запрос, скажем, следующего вида:
выберите А, Б, В из таблицы T, где T.а = "привет" и Т.Б = "есть" и Т.с = "МИР" группы А,Б,в
Я хотел бы иметь логическое условие (d = = true) для определения приведенного выше вычисления таким образом, чтобы, когда, скажем, d имеет значение true, приведенный выше запрос выполнялся, а когда d имеет значение false, запрос сводился к следующему и компилировался:
выберите a,b Из таблицы t, где t.a = "привет" и t.b = "там" сгруппируйте по a, b.

Есть ли какие-либо предложения относительно того, как этого можно достичь с помощью oracle 11g (sql/pl-sql/t-sql)?

Что я уже пробовал:

Я попробовал простую логику установки флага и выполнения запроса, но мне нужно условно скомпилировать часть запроса на основе заданного условия.

Kornfeld Eliyahu Peter

А как насчет "если"?

David_Wimbley

Я предполагаю, что логическое условие D передается в / не в столбец таблицы T?

Если это так, то в t-sql вы можете просто сделать что-то вроде

Объявить @D бит = 1;


Если (@d = 1)
Выберите "условие D истинно, запустите расширенный запрос".;
ЕЩЁ
Выберите "условие D ложно, выполните сжатый запрос".;

Но я, возможно, не совсем понимаю вашу проблему.

Member 12189753

@David_Wimbley: это имеет смысл. но это может быть громоздко, если запрос у меня намного длиннее. вопрос, который у меня есть, более обширный. мы запускаем более длинный производственный sql в общей упрощенной версии, которую я опубликовал в этом вопросе. поскольку мы делаем улучшения, чтобы добавить больше столбцов, предложений (where и groupby), которые, в свою очередь, имеют операторы case и условную логику и т. д., Нам нужно опустить добавления/улучшения в зависимости от системы/бизнес-линии, чтобы настроить запрос для каждого пользователя/группы. Я ищу способ либо процедурно, либо с помощью какой-то формы transact или прямого sql-способа установить эту настройку.