Скажите, у меня есть следующие данные
Name Value
===============
Small 10
Medium 100
Large 1000
Представьте, что они представляют собой объемы коробок. У меня есть несколько предметов, которые я хочу положить в коробки, и я хочу наименьшую возможную коробку. Мне нужен запрос SQL, который будет:
- Вернуть строку с наименьшей строкой, большей, чем параметр моего запроса
- Если такой строки нет, вернуть самую большую строку.
Легко разделить это на два запроса (т. Е. Сначала указать точку запроса 1 и, если строки не возвращаются, выбрать наибольшее число из таблицы). Тем не менее, мне нравится делать вещи в одном запросе, если это возможно, чтобы исключить накладные расходы (как переключение кода, так и переключение контекста), и похоже, что это можно сделать. Это, наверное, очень очевидно, но солнце сияло на меня весь день, и я не могу думать!
Так, например, я хочу, чтобы запрос возвращал 10, если вы используете параметр 5, 100, если вы используете параметр 15 и 1000, если вы используете что-либо больше 100 (включая числа больше 1000).
Я на Oracle 11g, так что с любыми особыми благами Oracle все в порядке.