我想询问如何在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
感谢。
答案 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());