Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql: max from between / 14 сообщений из 14, страница 1 из 1
02.05.2017, 14:23
    #39447366
lalafa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
Привет всем. Есть ли элегантный способ получить одну запись из выражения between?

Пример: select t.date from t where :param1 between t.fromdate and t.todate

Запрос выдает несколько записей, но мне надо взять максимальное значение из всех date. Внешние запросы не предлагать.
...
Рейтинг: 0 / 0
02.05.2017, 14:35
    #39447371
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
lalafaselect t.date from t where :param1 between t.fromdate and t.todate

Запрос выдает несколько записей, но мне надо взять максимальное значение из всех date.RTFM Aggregate Functions (FAQ)
...
Рейтинг: 0 / 0
02.05.2017, 14:35
    #39447372
XMLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
lalafa,
Код: plsql
1.
select max(t.date) from t where :param1 between t.fromdate and t.todate
...
Рейтинг: 0 / 0
02.05.2017, 15:11
    #39447389
lalafa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
XMLerlalafa,
Код: plsql
1.
select max(t.date) from t where :param1 between t.fromdate and t.todate



Тут условие выведено в колонку. Мне же нужно чтобы это условие было в после where .
...
Рейтинг: 0 / 0
02.05.2017, 15:16
    #39447391
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
lalafaТут условие выведено в колонку. Мне же нужно чтобы это условие было в после where .Бррррр... http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
02.05.2017, 15:18
    #39447393
saxarock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
lalafa,

Зачем?
...
Рейтинг: 0 / 0
02.05.2017, 15:35
    #39447403
sql: max from between
lalafaМне же нужно чтобы это условие было в после where
lalafaВнешние запросы не предлагать

Храните признак IS_MAKSIMALNOE_ZNA4ENIE, и пишите его в свой where.
...
Рейтинг: 0 / 0
02.05.2017, 15:40
    #39447407
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
Я такой умныйХраните признак в сберегательной кассе
...
Рейтинг: 0 / 0
02.05.2017, 15:50
    #39447413
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
кип денсе ренк фёст
...
Рейтинг: 0 / 0
02.05.2017, 15:57
    #39447416
j2k
j2k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
andreymxкип денсе ренк фёст ему же надо было lalafaв после where. Там аналитика не работает :D
...
Рейтинг: 0 / 0
02.05.2017, 16:04
    #39447427
sql: max from between
andreymx кип денсе ренк фёст

lalafaЗапрос выдает несколько записей

Ему(ей(им)) не подходит.
...
Рейтинг: 0 / 0
02.05.2017, 16:27
    #39447445
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
lalafaЗапрос выдает несколько записей, но мне надо взять максимальное значение из всех date. Внешние запросы не предлагать.

А внутренние?

Если нет повторяющихся дат, то можно использовать магию данных.
Код: plsql
1.
and t.date = (select max(tt.date) from t tt where ...)



Или влепить магию в виде order by t.date desc и fetch 1 на клиенте
...
Рейтинг: 0 / 0
02.05.2017, 16:27
    #39447446
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
j2kandreymxкип денсе ренк фёст ему же надо было lalafaв после where.Там аналитика не работает :Dработает, как и любая групповая функция.
...
Рейтинг: 0 / 0
02.05.2017, 16:50
    #39447468
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql: max from between
на правах шутки в продолжение = (select max(...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as (select level id, 
                  trunc(sysdate) + mod(level,3) date_, 
                  trunc(sysdate) - mod(level,5) start_date,  
                  trunc(sysdate) + 1 + mod(level,5) end_date 
          from dual connect by level <= 10
          ---- test data)[
select * from t 
where /*trunc(sysdate) + 3*/ :param between t.start_date and t.end_date
      and (t.date_, t.id) in (select max(tt.date_) keep (dense_rank last order by tt.date_), 
                                     max(tt.id) keep (dense_rank last order by tt.date_) 
                              from t tt 
                              where /*trunc(sysdate) + 3*/ :param between tt.start_date and tt.end_date);
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql: max from between / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]