powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка
2 сообщений из 2, страница 1 из 1
Сортировка
    #40068840
AidarH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Есть например такие данные:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
         with test (date1, date2, info, info1)
         as (select to_date('06.01.2020', 'dd.mm.yyyy'), null,--to_date('02.01.2020', 'dd.mm.yyyy'), 
         'aaa', 'ttt' from dual
            union all
          select to_date('05.01.2020', 'dd.mm.yyyy'), to_date('03.01.2020', 'dd.mm.yyyy'), 'bbb', 'ttt' from dual
          union all
          select to_date('05.01.2020', 'dd.mm.yyyy'), to_date('02.01.2020', 'dd.mm.yyyy'), 'ccc', 'ccc' from dual)
          select * from test


Надо написать запрос для получения следующих данных:
надо из данных сгруппированных по info1 получить строку по следующему критерию:
если заполнены все значения date2, то надо будет получить строку где date2 максимальный (в рамках info1),
если в наборе данных в какой-то строке date2 null и date1 не максимальный, то тогда надо будет получить строку где date2 максимальный(в рамках info1).
если date2 null и date1 максимальный, то вернуть эту строку

Как оптимально можно это сделать с помощью оконных функций.

Заранее спасибо.
...
Рейтинг: 0 / 0
Сортировка
    #40068850
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AidarH

если date2 null и date1 максимальный, то вернуть эту строку


таких строк может быть несколько

зы
сначала решите задачу неоптимально влоб по пунктах,
а потом займетесь оптимизацией (которая иногда вредит наглядности/прозрачности)

.....
stax
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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