powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-00907: missing right parenthesis: не могла найти ошибку
4 сообщений из 4, страница 1 из 1
ORA-00907: missing right parenthesis: не могла найти ошибку
    #40059366
zxzxzxzx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача: Напишите запрос, который будет выводить полное имя сотрудников, название города, и список коллег данного сотрудника. Если сотрудник работает один в городе, то в столбце 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
ORA-00907: missing right parenthesis: не могла найти ошибку
    #40059370
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот если бы использовала тэг SRC, как написано в правила, всё было бы ясно с первого
взгляда. В данном случае надо считать не скобки, а кавычки и апострофы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
ORA-00907: missing right parenthesis: не могла найти ошибку
    #40059374
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
ORA-00907: missing right parenthesis: не могла найти ошибку
    #40059426
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / ORA-00907: missing right parenthesis: не могла найти ошибку
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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