2013-06-04 77 views
3

我使用PARTITION BY子句對結果進行排序。在此問題中提到使用PARTITION BY的詳細信息Sql Order by on multiple column。當我在Oracle中運行時,它工作正常。我正在使用H2 db作爲我的單元測試用例。當我在H2分貝上運行相同的查詢時,它不起作用。它在H2中是否已知問題?是否有任何可以在Oracle和H2中使用的備用解決方案。PARTITION BY在H2 db中不起作用

回答

3

我不認爲H2支持窗口函數(又名分析函數)。但是,您可以使用標準的SQL做鏈接查詢:

SELECT t.* 
FROM yourtable t join 
    (select vendorname, max(incidentdate) as maxdate 
     from yourtable yt 
     group by vendorname 
    ) vn 
    on vn.vendorname = yt.vendorname 
ORDER BY vn.maxDate DESC, t.VendorName ASC, t.IncidentDate DESC; 

雖然這應該在兩種環境下運行時,over形式可能在執行SQL更好。

+1

表現甚至沒有比較。我仍在搜索可用於測試這些查詢的內存數據庫。 – Brian

+0

你的數據庫有多大?除非你有很多很多的數據,否則性能不應該那麼差。 –

+0

非常大(150m +分區,每天> 1B插入)。這是一個很大的問題,我希望現在可以解決這個問題,因爲分析是ANSI標準。我不會降低可讀性和性能,因此我可以更輕鬆地進行功能測試。否則,它的尾巴搖擺着狗。是否有支持分析的嵌入式數據庫(h2,hsql)? – Brian