Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / групповая функция не является одногруппной / 8 сообщений из 8, страница 1 из 1
12.01.2022, 17:25
    #40126074
kmskmskms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
SELECT er.id id, MAX(v.num) IBNUM
FROM solution_diagnostic.research er
INNER JOIN patient p ON p.keyid = er.patient_id
INNER JOIN visit v ON patientid = er.patient_id
WHERE er.id = 944011

почему возникает ошибка?
...
Рейтинг: 0 / 0
12.01.2022, 17:27
    #40126076
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
kmskmskms,
...
group by er.id

.....
stax
...
Рейтинг: 0 / 0
13.01.2022, 10:00
    #40126213
kmskmskms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
Stax,

вобщем по итогу запрос выглядит так

SELECT er.id ID, INITCAP(p.lastname || ' ' || p.firstname || ' ' || p.secondname) FIO, TRUNC(months_between(SYSDATE, p.birthdate)/12) AGE, p.birthdate BIRTHDATE, MAX(v.num) IBNUM
FROM solution_diagnostic.research er
INNER JOIN patient p ON p.keyid = er.patient_id
INNER JOIN visit v ON patientid = er.patient_id AND TRUNC(v.dat) <= TRUNC(er.dat) AND TRUNC(er.dat) <= TRUNC(NVL(v.dat1,SYSDATE+1)) AND v.vistype > 100
WHERE er.id = 1
GROUP BY ID, FIO, AGE, BIRTHDATE

но возникает другая ошибка
ORA-00904: "AGE": недопустимый идентификатор
00904. 00000 - "%s: invalid identifier"
...
Рейтинг: 0 / 0
13.01.2022, 10:03
    #40126214
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
Код: plsql
1.
2.
3.
4.
5.
GROUP BY 
 ID, 
 FIO, 
 TRUNC(months_between(SYSDATE, p.birthdate)/12), --AGE, 
 BIRTHDATE



.....
stax
...
Рейтинг: 0 / 0
13.01.2022, 10:23
    #40126220
kmskmskms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
ок, только почему так?! почему нельзя просто AGE указать?
...
Рейтинг: 0 / 0
13.01.2022, 10:48
    #40126225
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
kmskmskms,

фича

.....
stax
...
Рейтинг: 0 / 0
13.01.2022, 21:55
    #40126423
ASNexus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
kmskmskms
Stax,

вобщем по итогу запрос выглядит так

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT er.id ID, INITCAP(p.lastname || ' '  || p.firstname || ' ' || p.secondname) FIO, TRUNC(months_between(SYSDATE, p.birthdate)/12) AGE, p.birthdate BIRTHDATE, MAX(v.num) IBNUM
FROM solution_diagnostic.research er
INNER JOIN patient p ON p.keyid = er.patient_id
INNER JOIN visit v ON patientid = er.patient_id AND TRUNC(v.dat) <= TRUNC(er.dat) AND TRUNC(er.dat) <= TRUNC(NVL(v.dat1,SYSDATE+1)) AND v.vistype > 100
WHERE er.id = 1
GROUP BY ID, FIO, AGE, BIRTHDATE



но возникает другая ошибка
ORA-00904: "AGE": недопустимый идентификатор
00904. 00000 - "%s: invalid identifier"


Лучше так:
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT er.id ID, INITCAP(p.lastname || ' '  || p.firstname || ' ' || p.secondname) FIO, TRUNC(months_between(SYSDATE, p.birthdate)/12) AGE, p.birthdate BIRTHDATE, MAX(v.num) IBNUM
FROM solution_diagnostic.research er
INNER JOIN patient p ON p.keyid = er.patient_id
INNER JOIN visit v ON patientid = er.patient_id AND TRUNC(v.dat) <= TRUNC(er.dat) AND TRUNC(er.dat) <= TRUNC(NVL(v.dat1,SYSDATE+1)) AND v.vistype > 100
WHERE er.id = 1
GROUP BY ID, lastname, firstname, secondname, BIRTHDATE



Алиасы столбцов нельзя использовать в GROUP BY в отличии от ORDER BY - таков стандарт SQL, поддерживаемый Oracle.
Отдельной группировки по выражению для "AGE" не нужно - Oracle понимает, что она однозначно выводится из группировки по BIRTHDATE.
...
Рейтинг: 0 / 0
14.01.2022, 10:13
    #40126498
kmskmskms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
групповая функция не является одногруппной
ок, благодарю
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / групповая функция не является одногруппной / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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