Я попробовал эту опцию, но она говорит, что мы должны отдать заказ по предложению внутри функции анализа строк, как показано ниже,
row_number() over (partition by lastName, firstName order by lastName, firstName) rn
Это прекрасно работает для моего сценария, когда я помещаю заказ по предложению.*
Мой сценарий состоит в том, что данные пользователя находятся в таблице A, группы пользователей - в таблице C, а связь между пользователями и группами пользователей - в таблице B. Один пользователь может иметь несколько групп пользователей.Мне нужно получить результаты с именем пользователя с несколькими группами пользователей в одной строке
**
Запрос:
**
SELECT username,
MAX( CASE WHEN rn = 1 THEN ugroup ELSE NULL END ) usergroup1,
MAX( CASE WHEN rn = 2 THEN ugroup ELSE NULL END ) usergroup2,
MAX( CASE WHEN rn = 3 THEN ugroup ELSE NULL END ) usergroup3,
MAX( CASE WHEN rn = 4 THEN ugroup ELSE NULL END ) usergroup4,
MAX( CASE WHEN rn = 5 THEN ugroup ELSE NULL END ) usergroup5,
from (
select
a.user_name username,
c.name ugroup,
row_number() over (partition by a.user_name order by a.user_name) rn
from users a,
usergroupmembership b,
usergroups c
where a.USER_NAME in ('aegreen',
'esportspau'
)
and a.user_id= b.user_id
and b.group_id=c.group_id
)group by uname;
**
Результат запроса
**
USERNAME USERGROUP1 USERGROUP2 USERGROUP3 USERGROUP4 USERGROUP5
aegreen US_GOLF (null) (null) (null) (null)
esportspau EMEA - FSERVICE USER_ES_ES EMEA-CR-ONLY (null) (null)