我想根据另一个列值(类型)的条件求和或减去值(数量)。在香草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_,