【发布时间】:2019-05-05 11:20:17
【问题描述】:
如何在 JOOQ 中编写如下 SQL?
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 Documentation,可以使以下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)
我需要使用之前在 CASE 中使用“或”的 sql 语句。
【问题讨论】: