2012-07-04 19 views
5

Sadece derby veritabanında on kayıt almak istiyorum.sql veritabanında limit kayıt grubu için sql

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 

Sonunda nereye rownum <= 10 kullanarak 10 birinci veri sınırlayabilir, fakat sorun ben 10 aldım bu yüzden ilk order by maddesini kullanarak sipariş olmadığını veridir: Bunu yapmak için öğretici arama edilmiştir rastgele veri.

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 

Bu hata verdi: Veri rownum vermeden önce

Ben order by koyduğunuzda. Sonucu, sorguyu tekrar iç tablo olarak koyduğunuzda, group by olamaz, ancak derby gereksinimi row_number işlevini kullanmaktır. Önce row_number'i içeriye ekleyin ve bunu bir sonraki katmanda kullanın. Herhangi biri yardımcı olabilir? Derby destek limiti değildir. Önce sipariş verdiğim başka bir yol var mı?

cevap

9

maddesi ile sipariş verebilir ve ben

FETCH FIRST 10 ROWS ONLY 

fakat zayıf beni kullanarak derbisinde sınırlamak için bu gibi bulundu Bu derbi 10.5 destek ve cambalığı 2.1 ile derby 10.4 demeti kullanarak kullanıyorum eğer hala bir 10.4 cuz kullanıyorum eğer ben göçtüre için çok korkuyorum

+1

tam sorgu verebilir –

1

Siz ") (AŞIRI" içeride i araştıran edilmiştir

OVER(order by effot desc) AS rownum 
+2

Hayır Derby bunu desteklemiyor: http://db.apache.org/derby/docs/10.7/ref/rreffuncrownumber.html –

+0

Çalıştığım için üzgünüm evet, hala hata olduğunu desteklemiyorum hala hata i'm derby 10.4 kullanarak –