在Querydsl中选择distinct字段

时间:2016-02-18 14:16:03

标签: jpa eclipselink querydsl

我想询问如何在Querydsl中创建SELECT Distinct on field 4。执行此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

感谢。

1 个答案:

答案 0 :(得分:4)

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

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());