从总和中减去或相加值,具体取决于另一列的值

时间:2018-11-09 07:45:28

标签: java mysql spring-data-jpa querydsl

我想根据另一个列值(类型)的条件求和或减去值(数量)。在普通sql中将如下所示:

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

如何使用querydsl 4实现此目标。这是我到目前为止所拥有的

collectionTransaction.quantity.sum()

我不知道要在其中实现逻辑。

1 个答案:

答案 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_,