Как мне написать следующий SQL в JOOQ?
SELECT COUNT(*) as total,
SUM(CASE WHEN (in_kind OR goods) THEN 1 ELSE 0 END) AS alt_donation
FROM donation
Все три столбца ('not_found', 'in_kind' и 'goods') являются логическими.
У меня естьрассмотрел другие связанные вопросы и документацию JOOQ CASE и может заставить следующий sql работать в JOOQ.
SELECT COUNT(*) AS total,
SUM(CASE WHEN (not_found) THEN 0 ELSE 1 END) AS alt_donation
FROM donation
Версия JOOQ работает правильно для этого примера:
val query = dslContext
.select(DSL.count().`as`("donations"),
DSL.sum(DSL.choose(DONATION.NOT_FOUND).`when`(true, 0).otherwise(1)).`as`("altdonation"))
.from(DONATION)
Мне нужно использовать более ранний SQL-оператор, который использует 'или' в CASE.