sql для ограничения группы записей в базе данных derby

Я хочу получить десять записей только в базе данных дерби. Я искал учебник для этого:

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 записей?

5
задан kiritsuku 13 September 2012 в 09:53
поделиться