powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка по нескольким полям
5 сообщений из 5, страница 1 из 1
Сортировка по нескольким полям
    #39912306
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть запрос, который возвращает пациентов и услуги, которые им назначены.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SELECT
r.number AS number
,TO_CHAR(r.dat,'dd.mm.yyyy') AS dat
,UPPER(p.lastname) AS fam
,UPPER(p.firstname) AS im
,UPPER(p.secondname) AS ot
,TO_CHAR(p.birthdate, 'dd.mm.yyyy') AS bdate
,s.text
FROM
research r
LEFT OUTER JOIN patient p ON p.keyid = r.patient_id
LEFT OUTER JOIN orders o ON o.research_id = r.id
LEFT OUTER JOIN service s ON s.keyid = o.service_id
WHERE
TRUNC(r.dat) BETWEEN to_date('01.01.2020','dd.mm.yyyy') AND to_date('10.01.2020','dd.mm.yyyy')
AND o.service_id IN (
3403,
3404,
3405,
3406,
3409,
2359,
2360,
2361,
2362,
2723
)
ORDER BY s.text



В условии ниже, перечислены все возможные услуги, которые могут быть назначены пациентам.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
AND o.service_id IN (
3403,
3404,
3405,
3406,
3409,
2359,
2360,
2361,
2362,
2723
)



Можно ли вывести пациентом в таком порядке:
1. Сначала те, кому назначены услуги 3403, 3404, 3405, 3406
2. Затем кому: 2359, 2360, 2361, 2362
3. 3403, 3405, 2359, 2361
4. 3404, 3406, 2360, 2362
5. 3404, 3406, 2360, 2362, 3409, 2723

В одном запросе можно такую сортировку сделать?
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39912311
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
order by decode(service_id,3403,1,...3403,2....)

.....
stax
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39912313
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolhoz
В одном запросе можно такую сортировку сделать?
Фраза предполагает, что ты не знаешь как "такую сортировку сделать" только в одном запросе, но знаешь как в другом.
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39912319
kolhoz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-, Я думал сделать через union, но тоже не то.
...
Рейтинг: 0 / 0
Сортировка по нескольким полям
    #39912411
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolhoz,

За денормализацию нужно платить))

case when ((listagg() ... over ()) = '2359, 2361, 3403, 3405') then 3 ...

listagg

возможны другие варианты, вплоть до квадратно-гнездового coalesce((select 3 from dual where exists () and exists () and ...), ...)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка по нескольким полям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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