JOOQ窗口分区次序DESC

问题描述:

我尝试写出下面PostgreSQL的查询到JOOQ:JOOQ窗口分区次序DESC

SELECT * FROM 
    (SELECT *, row_number() OVER (PARTITION BY propertyid ORDER BY validfrom DESC) 
     AS rownum FROM propertyvalue WHERE validfrom <= '1978-01-01T00:00:00Z') X 
WHERE rownum = 1; 

所以我想写与使用窗口功能,先用内部查询开始嵌套查询的查询。我来到那么远:

ctx.select(PROPERTYALUE.fields(), DSL.rowNumber().over(). 
     partitionBy(PROPERTYVALUE.propertyid).orderBy(PROPERTYVALUE.validfrom).???) 

在orderBy命令后,我没有一个DESC选项在JOOQ中使用了。只是有命令,如rangeFollowingrowsCurrentRow和类似desc()继承的命令,它返回的SortField对象上,我不敢说我​​需要后续命令了。

那么,有没有在JOOQ任何方式来制定我期望的SQL查询与窗函数的倒序?

这样写:

DSL.rowNumber() 
    .over() 
    .partitionBy(PROPERTYVALUE.propertyid) 
    .orderBy(PROPERTYVALUE.validfrom.desc())) 

观察的事实,我为了得到的SortField传递到窗口函数调用的orderBy()条款呼吁列validfromdesc()

你想做些什么本来由窗口函数表达式,如订购在SELECT声明的ORDER BY子句中。例如: -

SELECT * 
FROM propertyvalue 
WHERE validfrom <= '1978-01-01T00:00:00Z' 
ORDER BY row_number() OVER (PARTITION BY propertyid ORDER BY validfrom) DESC