【发布时间】:2021-11-27 14:22:09
【问题描述】:
我正在努力使用 JOOQ DSL 构建以下查询 - 因为我无法将 distinct 关键字引入 JOOQ 生成的查询中。我将如何做到这一点?
在 listAgg 方法后面创建的 ListAgg-Object 将 distinct 的标志作为值,但由于 ListAgg 是包私有的,我无法访问它。有没有办法利用这个标志或任何其他方式来实现这一点?
Oracle SQL
select distinct DATA.*, LISTAGG(distinct ORGANISATIONS.LABEL, ', ') WITHIN GROUP (ORDER BY DATA.ID),
from DATA
join ORGANISATIONS
on DATA.ORG_ID= ORGANISATIONS.ID
group by DATA.fields()
JOOQ
create.selectDistinct(DATA.asterisk(), listAgg(ORGANISATIONS.LABEL, ", " ).withinGroupOrderBy(DATA.ID).as("ORG_LABELS"))
.from(DATA)
.join(ORGANISATIONS).on(DATA.ORG_ID.eq(ORGANISATIONS.ID))
.groupBy(DATA.fields())
.fetch()
顺便说一句,表名已被简化。
非常感谢任何意见。
【问题讨论】:
-
我发现了这个问题:github.com/jOOQ/jOOQ/issues/7104,我相信目前 jOOQ DSL 无法做到这一点。所以你可能想在 GitHub 上添加一个问题