Я хочу получить десять записей только в базе данных дерби. Я искал учебник для этого:
select * from (select ROW_NUMBER() OVER() AS rownum,name,effort from (select name, effort from
(select TBL_PROJECT_DETAIL.P_NAME as Name, sum(TBL_TIMESHEET.EFFORT) as effort from
TBL_TIMESHEET join tbl_project_detail on TBL_TIMESHEET.PROJECT_ID = TBL_PROJECT_DETAIL.ID group by TBL_PROJECT_DETAIL.P_NAME) as New)
as new2)
as new3
where rownum <= 10
Я могу сначала ограничить данные до 10, используя where rownum <= 10
в конце, но проблема в том, что данные не упорядочены с использованием предложения order by
, поэтому я получил 10 случайных данных.
Когда я ставлю order by
перед тем, как данные даютrownum
:
select * from (select ROW_NUMBER() OVER() AS rownum,name,effort from
(select name, effort from
(select TBL_PROJECT_DETAIL.P_NAME as Name, sum(TBL_TIMESHEET.EFFORT) as effort from
TBL_TIMESHEET join tbl_project_detail on TBL_TIMESHEET.PROJECT_ID = TBL_PROJECT_DETAIL.ID group by TBL_PROJECT_DETAIL.P_NAME)
as New)
as new2 order by effot desc)
as new3 where rownum <=10
Это дало ошибку. Это похоже на то, что group by
невозможно, когда вы снова помещаете результат в качестве внутренней таблицы для запроса, но требование для дерби - использовать номер строки _. Сначала добавьте номер строки _во внутренний и используйте его в следующем слое. Кто-нибудь может помочь? Дерби не предел поддержки. Каким-либо другим способом я могу сначала заказать 10 записей?