2013-06-04 66 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

相关问题