Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка по нескольким полям / 5 сообщений из 5, страница 1 из 1
10.01.2020, 09:52
    #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
10.01.2020, 10:03
    #39912311
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по нескольким полям
order by decode(service_id,3403,1,...3403,2....)

.....
stax
...
Рейтинг: 0 / 0
10.01.2020, 10:06
    #39912313
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по нескольким полям
kolhoz
В одном запросе можно такую сортировку сделать?
Фраза предполагает, что ты не знаешь как "такую сортировку сделать" только в одном запросе, но знаешь как в другом.
...
Рейтинг: 0 / 0
10.01.2020, 10:18
    #39912319
kolhoz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка по нескольким полям
-2-, Я думал сделать через union, но тоже не то.
...
Рейтинг: 0 / 0
10.01.2020, 14:19
    #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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сортировка по нескольким полям / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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