Условно изменить 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-способа установить эту настройку.