我想根据另一个列值(类型)的条件求和或减去值(数量)。在香草sql中将是这样的:

sum( if(`type` = 1, -1, 1) * `quantity` )


如何使用querydsl 4实现此目的。这就是我到目前为止

collectionTransaction.quantity.sum()


我无法弄清楚的是在其中实现逻辑。

最佳答案

基于@Joakim Danielson的参考,我设法弄对了。这是我正确的方法:

new CaseBuilder()
      .when(collectionTransaction.collectionType.eq(1))
      .then(collectionTransaction.quantity.sum())
      .otherwise(collectionTransaction.quantity.negate().sum()),


转换为以下sql语句:

case
  when collection0_.collection_transaction_type=1 then sum(collection0_.quantity)
  else sum(-collection0_.quantity)
end as col_1_0_,

09-30 15:19
查看更多