SELECT Querydsl 中的不同字段

SELECT distinct field in Querydsl

我想问一下如何在 Querydsl 4 中创建一个 SELECT Distinct on field。最好的方法是什么 SQL 请求:

SELECT DISTINCT ON 
    (company_id, EXTRACT(MONTH FROM createddt), EXTRACT(YEAR FROM createddt)) id, 
    createddt 
FROM companystats 
ORDER BY company_id, 
    EXTRACT(MONTH FROM createddt) DESC,
    EXTRACT(YEAR FROM createddt) DESC,
    createddt DESC

谢谢。

您的 SQL 看起来像一个 Postgres 查询。因此,最好的方法是在 com.querydsl.sql.postgresql.PostgreSQLQuery 中使用 distinctOn

PostgreSQLQuery query = new PostgreSQLQuery(con);
query.select(companystats.id, companystats.createddt)
    .distinctOn(companystats.company_id, 
        companystats.createddt.month(), companystats.createddt.year())
    .from(companystats)
    .orderBy(companystats.createddt.month().desc(), 
             companystats.createddt.year().desc(),
             companystats.createddt.desc());