Оптимизация запросов для разделения значений всех авторизованных пар в два столбца со значениями по умолчанию - PullRequest
0 голосов
/ 26 марта 2019

Я хотел бы оптимизировать запрос Oracle для преобразования таблицы со всеми значениями авторизованной пары в два столбца.Первый за исключением разрешенных по умолчанию, а второй за исключением запрещенных по умолчанию.

Например:

| ROOM  | USER AUTHORIZED |
| ROOM1 |   A             |
| ROOM2 |   A             |
| ROOM2 |   B             |
| ROOM3 |   B             |
| ROOM4 |   B             | 
| ROOM5 |   B             | 
| ROOM2 |   C             |
| ROOM3 |   C             |
| ROOM4 |   C             | 

Кому:

ROOM | USER EXCEPTION AUTHORIZED | USER EXCEPTION FORBIDDEN |

ROOM1|          A                |       B;C
ROOM2|          A                |       
ROOM3|                           |
ROOM4|                           |
ROOM5|                           |       C

Я использовал этот запрос, чтобы получить исключение:

WITH USERS
        AS( SELECT USER FROM ROOM_USERS GROUP BY USER HAVING count(*)>(SELECT count(*)/2 FROM ROOM_USERS )),
    ROOMS
        AS( SELECT DISTINCT(ROOM) as room FROM ROOM_USERS)
SELECT ROOM, LISTAGG(USER, ';') WITHIN GROUP (ORDER BY USER)
FROM USERS, ROOMS
WHERE USERS.user||ROOMS.room NOT IN (
    SELECT user||room
    FROM ROOMS_USERS
)
GROUP BY room;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...