代码之家  ›  专栏  ›  技术社区  ›  Yunus Einsteinium

根据另一列的值,从总和中减去或添加值

  •  0
  • Yunus Einsteinium  · 技术社区  · 7 年前

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

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

    如何使用 querydsl 4 . 这就是我目前所拥有的

    collectionTransaction.quantity.sum()
    

    我无法理解的是如何实现其中的逻辑。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Yunus Einsteinium    7 年前

    根据@JoakimDanielson的推荐,我成功地做到了。我就是这样做的:

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