Java JOOQ窗口分区顺序说明

Java JOOQ窗口分区顺序说明,java,postgresql,jooq,Java,Postgresql,Jooq,我尝试将以下PostgreSQL查询公式化为JOOQ: 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; 在orderBy命令之后,我在JOOQ中

我尝试将以下PostgreSQL查询公式化为JOOQ:

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;
在orderBy命令之后,我在JOOQ中不再使用DESC选项。只有像
rangeFollowing
rowscrentrow
这样的命令,以及像
desc()
这样的继承命令,它返回一个SortField对象,我无法再调用所需的后续命令

那么,在JOOQ中,有没有办法在窗口函数中用DESC order来表达我想要的SQL查询呢

DSL.rowNumber()
.超过()
.partitionBy(PROPERTYVALUE.propertyid)
.orderBy(PROPERTYVALUE.validfrom.desc())
请注意,我在
validfrom
列上调用了
desc()
,以便将结果
SortField
传递给窗口函数调用的
orderBy()
子句

您试图做的是按窗口函数表达式排序,例如在
SELECT
语句的
orderby
子句中。例如:

选择*
从属性值
哪里有效
ctx.select(PROPERTYALUE.fields(), DSL.rowNumber().over().
       partitionBy(PROPERTYVALUE.propertyid).orderBy(PROPERTYVALUE.validfrom).???)