我想根据另一个列值(类型)的条件求和或减去值(数量)。在普通sql中将如下所示:
sum( if(`type` = 1, -1, 1) * `quantity` )
如何使用querydsl 4
实现此目标。这是我到目前为止所拥有的
collectionTransaction.quantity.sum()
我不知道要在其中实现逻辑。
答案 0 :(得分:0)
基于@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_,