powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / групповая функция не является одногруппной
8 сообщений из 8, страница 1 из 1
групповая функция не является одногруппной
    #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
групповая функция не является одногруппной
    #40126076
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmskmskms,
...
group by er.id

.....
stax
...
Рейтинг: 0 / 0
групповая функция не является одногруппной
    #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
групповая функция не является одногруппной
    #40126214
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
GROUP BY 
 ID, 
 FIO, 
 TRUNC(months_between(SYSDATE, p.birthdate)/12), --AGE, 
 BIRTHDATE



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

фича

.....
stax
...
Рейтинг: 0 / 0
групповая функция не является одногруппной
    #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
групповая функция не является одногруппной
    #40126498
kmskmskms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ок, благодарю
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / групповая функция не является одногруппной
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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