Как сгруппировать только по одному полю в ORACLE? - PullRequest
0 голосов
/ 02 марта 2020

У меня есть этот запрос

select id, order_number, order_date from employee_trip_orders
group by id, order_number, order_date

Но я хотел бы использовать group by только с одним полем, например

select id, order_number, order_date from employee_trip_orders
group by order_date 

Но это дает мне ошибку «не по выражению» , Как я могу сгруппировать только один столбец? Заранее спасибо

Существующие данные:

id   order_number  order_date

1      553         22.01.2015

2      141         15.07.2019

3      142         28.02.2020

4     1412         22.01.2015

Ожидаемый результат:

1   553     22.01.2015

4   1412    22.01.2015

2   141     15.07.2019

3   142     28.02.2020

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Вы не можете использовать столбцы в SELECT, если вы не используете их в Group By.

И если вы хотите использовать столбцы, которых нет в Group by, то вы придется использовать Aggregation Functions.

РЕДАКТИРОВАТЬ: ссылаясь на ожидаемые результаты, я думаю, что вы хотите использовать Order by

select id, order_number, order_date from employee_trip_orders
order by order_date,id;
0 голосов
/ 02 марта 2020

Можно. Вам просто нужны функции агрегирования для всех других столбцов:

select id, max(order_number), max(order_date)
from employee_trip_orders
group by id;

max() - это просто пример нужных вам функций агрегирования. Ваш вопрос не ясен относительно того, что вы действительно хотите в наборе результатов.

РЕДАКТИРОВАТЬ:

Вы, кажется, хотите order by, а не group by:

select eto.*
from employee_trip_orders eto
order by order_date, id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...