Условный вывод pl / sql - PullRequest
1 голос
/ 19 мая 2011

Мне нужно получить значение 1 или 0 из запроса к БД, что, в свою очередь, должно сделать следующее:

  • получить значение некоторого поля из таблицы
  • сравнить это значение поля сДля некоторого литерала (определенного в самом запросе)
  • , если значение не будет совпадать с литералом и запрос выполняется в определенный период времени (т. е. с 9:00 до 10:00), он должен вернуть 0, иначе 1
  • включает ответный набор множеств (наборы) результатов (см. Далее)

Пока у меня есть следующая вещь:

select instr (field, 'literal') изtable_name где trunc (время) = trunc (sysdate)

, который возвращает 1, если поле из таблицы имя_таблицы содержит «литерал» (где условие проверяет, усечено ли время в имя_таблицы равно усеченному системному времени).

То, что я не могу получить, это то, как я могу:

  • ввести ограничение по времени(в основном, если с 9:00 до 10:00 всегда возвращать 1)
  • обрабатывать несколько строк ответа, что означает, чтоесли какая-либо строка ответа вернет 1, тогда мне нужна только 1 строка с 1 значением

Заранее спасибо.

PS: Пожалуйста, прокомментируйте вопрос, если что-то осталосьрасплывчатый.

1 Ответ

3 голосов
/ 19 мая 2011

Звучит так, будто вы хотите получить CASE.Было бы полезно, если бы вы разместили DDL для создания таблицы, немного DML для заполнения данных и ожидаемый результат.Похоже, у вас противоречивые требования относительно того, что вы хотите вернуть, если запрос выполняется с 9 до 10:00.Вы говорите «если ... запрос выполняется в определенный период времени ... он должен сначала вернуть 0, иначе 1», но затем вы говорите «если его с 9:00 до 10:00 всегда возвращать 1»).Я думаю, что вы хотите что-то вроде

SELECT MAX(zero_or_one)
  FROM (
      SELECT (CASE WHEN to_char( sysdate, 'HH24' ) = '09'
                     THEN 1
                   WHEN instr( column_name, 'literal' ) > 0
                     THEN 1
                   ELSE 0
                END) zero_or_one
        FROM table_name
       WHERE trunc(date_column) = trunc(sysdate)
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...