powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Помогите написать select
6 сообщений из 6, страница 1 из 1
Помогите написать select
    #39662926
alx71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create table ttt
(
NO number not null,
DT date not null,
PART_NO number,
ALL_PARTS number,
ID_PART number
);



NO - порядковый номер записи в течении дня DT, PART_NO - номер записи в группе, ALL_PARTS - количество записей в группе, ID_PART - идентификатор группы записей. Если группа состоит из одной записи, то ID_PART, PART_NO и ALL_PARTS null. DT truncate. 1 <=PART_NO<= ALL_PARTS

Необходимо выбрать максимальный NO за максимальную DT для записей, у которых либо ID_PART null, либо количество записей с одинаковым ID_PART равно ALL_PARTS, например:

NO_DT PART_NO ALL_PARTS ID_PART
1 01.06.2018 null null null
2 01.06.2018 1 3 1

Результат NO=1 DT=01.06.2018

NO_DT PART_NO ALL_PARTS ID_PART
1 01.06.2018 null null null
2 01.05.2018 1 2 1
2 01.06.2018 2 3 1

Результат NO=2 DT=01.06.2018.
...
Рейтинг: 0 / 0
Помогите написать select
    #39662930
alx71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alx71NO_DT PART_NO ALL_PARTS ID_PART
1 01.06.2018 null null null
2 01.05.2018 1 2 1
2 01.06.2018 2 2 1

Результат NO=2 DT=01.06.2018.

Sorry.
...
Рейтинг: 0 / 0
Помогите написать select
    #39662934
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дай исходные данные посредством with + union all.
...
Рейтинг: 0 / 0
Помогите написать select
    #39662946
alx71
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
5.
with grp as
(
select 1 NO,'01-JUN-18' DT,null PART_NO,null ALL_PARTS,null ID_PART from dual union all
select 2 NO,'01-JUN-18' DT,1 PART_NO,3 ALL_PARTS,1 ID_PART from dual
)


Результат NO=1 DT=01.06.2018
Код: plsql
1.
2.
3.
4.
5.
6.
with grp as
(
select 1 NO,'01-JUN-18' DT,null PART_NO,null ALL_PARTS,null ID_PART from dual union all
select 2 NO,'01-MAY-18' DT,1 PART_NO,2 ALL_PARTS,1 ID_PART from dual union all
select 2 NO,'01-JUN-18' DT,2 PART_NO,2 ALL_PARTS,1 ID_PART from dual
)


Результат NO=2 DT= '01-JUN-18'.
...
Рейтинг: 0 / 0
Помогите написать select
    #39662952
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alx71,

Необходимо выбрать максимальный NO за максимальную DT для записей, у которых либо ID_PART null, либо количество записей с одинаковым ID_PART равно ALL_PARTS, например:

1) where у которых либо ID_PART null
2) or ибо количество записей с одинаковым ID_PART равно ALL_PARTS
3) last_value keep

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

ой не last_value а просто last

max(no) KEEP (DENSE_RANK LAST ORDER BY dt) max_no

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


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