#sql #oracle #greatest-n-per-group
#sql #Oracle #наибольшее число пользователей на группу
Вопрос:
Как я могу получить данные, в которых я хочу написать вложенный запрос с объединениями? Я хочу отобразить first_name
, designation
откуда t1
и project_name
col2
t2
откуда end_date= (select max(end_date) from project where res_id=?)
;
Не могли бы вы помочь мне написать sql-запрос
select R.first_name, R.Designation, R.DOB, R.DOJ, R.Department,
R.city, p.project_name, p.start_date, p.end_date,
p.end_date 1 as next_avail_date
from resources R full JOIN project p on (r.res_id=p.res_id)
where r.u_id='amp;u_id';
Я хочу выбрать название проекта на основе следующего запроса
select project_name from project where end_date= (select max(end_date) from project where res_id=1);
как мне добавить его в приведенный выше запрос?
Комментарии:
1. Пожалуйста, покажите свой код.
2. выберите R.first_name, R.Обозначение, R.DOB, R.Министерство юстиции, R.Департамент, R.город, p.project_name, p.start_date, p.end_date, p.end_date 1 в качестве next_avail_date из ресурсов R полное ПРИСОЕДИНЕНИЕ к проекту p on (r.res_id=p.res_id), где r.u_id=’amp;u_id’; Я хочу выбрать имя_проекта из проекта, где end_date= (выберите max(end_date) из проекта, где res_id=1);
Ответ №1:
Вы можете использовать вложенный запрос в качестве представления в ПРЕДЛОЖЕНИИ FROM и выполнять объединение с ним так же, как с таблицей. Попробуйте что-то вроде этого
select R.first_name,
R.Designation,
R.DOB, R.DOJ,
R.Department,
R.city,
p.project_name,
p.start_date,
p.end_date,
p.end_date 1 as next_avail_date
from resources r, (select project_name
from project
where end_date= (select max(end_date)
from project pr
where pr.res_id=1)) p
where r.u_id='amp;u_id'
and r.res_id=p.res_id;
Комментарии:
1. Я получаю эту ошибку ORA-00904: «P».»RES_ID»: недопустимый идентификатор 00904. 00000 — «%s: недопустимый идентификатор» * Причина: * Действие: ошибка в строке: 15 Столбец: 17