簡體   English   中英

如何在 jooq 中編寫此查詢

[英]How to write this query in jooq

select sum(x.amt) from (select amount as amt from user_transactions where TransactionTimeStamp > '2022-03-09') as x

我無法將此 sql 查詢轉換為 jooq 查詢。 請幫忙

創建派生表

您可以像這樣創建派生表

// Assuming this static import, as always:
import static org.jooq.impl.DSL.*;

Table<?> x = table(
    select(USER_TRANSACTIONS.AMOUNT)
    .from(USER_TRANSACTIONS)
    .where(USER_TRANSACTIONS.TRANSACTIONTIMESTAMP.gt(
        LocalDate.parse("2022-03-09")
    ))
).as("x");

然后像這樣使用它:

ctx.select(sum(x.field(USER_TRANSACTIONS.AMOUNT)))
   .from(x)
   .fetch();

使用FILTER的替代方法

jOOQ 支持標准的 SQL FILTER子句,也可以為 SQL 服務器模擬它:

ctx.select(sum(USER_TRANSACTIONS.AMOUNT).filterWhere(
       USER_TRANSACTIONS.TRANSACTIONTIMESTAMP.gt(LocalDate.parse("2022-03-09"))
   ))
   .from(USER_TRANSACTIONS)
   .fetch();

如果您在單個查詢中聚合幾件事,例如使用不同的過濾器,這將特別有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM