Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-00907: missing right parenthesis: не могла найти ошибку / 4 сообщений из 4, страница 1 из 1
03.04.2021, 17:34
    #40059366
zxzxzxzx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-00907: missing right parenthesis: не могла найти ошибку
Задача: Напишите запрос, который будет выводить полное имя сотрудников, название города, и список коллег данного сотрудника. Если сотрудник работает один в городе, то в столбце collegues нужно вывести слово ‘NOBODY’. Список коллег нужно вывести через запятую. Самого сотрудника не должно быть в списке. ВАЖНО: Формат списка должен быть следующим: last_name, last_name, last_name
Внимательно проследите за списком.

Я написала такой код:
select distinct e.first_name || ' ' || e.last_name as fullname, city,
regexp_replace(regexp_replace(listagg(ee.last_name, ', ')
within group (order by ee.last_name)
over (partition by e.first_name || ' ' || e.last_name),
e.last_name, 'NOBODY'), 'NOBODY, |, NOBODY', '') as collegues
from employees e, employees ee, departments d, locations l
where ee.department_id = d.department_id
and e.department_id = ee.department_id
and d.location_id = l.location_id
order by city;


Но у меня выдает ошибку:
ORA-00907: missing right parenthesis
00907. 00000 - "missing right parenthesis"
*Cause:
*Action:
Error at Line: 4 Column: 1

Не могла исправить ошибку, помогите пожалуйста
...
Рейтинг: 0 / 0
03.04.2021, 18:02
    #40059370
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-00907: missing right parenthesis: не могла найти ошибку
А вот если бы использовала тэг SRC, как написано в правила, всё было бы ясно с первого
взгляда. В данном случае надо считать не скобки, а кавычки и апострофы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.04.2021, 18:10
    #40059374
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-00907: missing right parenthesis: не могла найти ошибку
zxzxzxzx,

какая версия Oracle у Вас?
p.s. Проверил на 11.2.0.4 и 19.5

И да, проверьте с помощью sqlplus
Код: 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.
29.
30.
31.
32.
33.
34.
SQL>
with employees(department_id,first_name,last_name) as (
select 1,'Scott','Tiger' from dual
)
,departments (department_id,location_id) as (
select 1,1 from dual
)
,locations (location_id,city) as (
select 1,'Moscow' from dual
)
select distinct e.first_name || ' ' || e.last_name as fullname, city,
regexp_replace(regexp_replace(listagg(ee.last_name, ', ')
within group (order by ee.last_name)
over (partition by e.first_name || ' ' || e.last_name),
e.last_name, 'NOBODY'), 'NOBODY, |, NOBODY', '') as collegues
from employees e, employees ee, departments d, locations l
where ee.department_id = d.department_id
and e.department_id = ee.department_id
and d.location_id = l.location_id
order by city;

FULLNAME    CITY   COLLEGUES
----------- ------ ------------------------------
Scott Tiger Moscow NOBODY

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE	11.2.0.4.0	Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
...
Рейтинг: 0 / 0
03.04.2021, 20:17
    #40059426
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-00907: missing right parenthesis: не могла найти ошибку
zxzxzxzx,

Добавляем данных :)
Код: 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.
29.
30.
31.
-- test data
with employees(department_id,first_name,last_name) as (
select 1,'Scott','Tiger' from dual union all
select 1,'Jon','Smit' from dual union all
select 1,'James','Bond' from dual union all
select 2,'Vasily','Pupkin' from dual
)
,departments (department_id,location_id) as (
select 1,1 from dual union all
select 2,1 from dual
)
,locations (location_id,city) as (
select 1,'Moscow' from dual
)
-- you select
select distinct e.first_name || ' ' || e.last_name as fullname, city,
regexp_replace(regexp_replace(listagg(ee.last_name, ', ')
within group (order by ee.last_name)
over (partition by e.first_name || ' ' || e.last_name),
e.last_name, 'NOBODY'), 'NOBODY, |, NOBODY', '') as collegues
from employees e, employees ee, departments d, locations l
where ee.department_id = d.department_id
and e.department_id = ee.department_id
and d.location_id = l.location_id
order by city;
FULLNAME      CITY   COLLEGUES
------------- ------ --------------------------------------------------
James Bond    Moscow Smit, Tiger
Scott Tiger   Moscow Bond, Smit
Jon Smit      Moscow Bond, Tiger
Vasily Pupkin Moscow NOBODY
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-00907: missing right parenthesis: не могла найти ошибку / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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