如何选择行直到与光滑达到总和?

时间:2017-01-14 14:51:42

标签: scala slick

我现在有以下代码:

var test: Rep[Long] = 4234
Model.sellOrder
  .filter(_.price <= price)
  .sortBy(_.price.asc)
  .filter(order => {test -= order.amount; test < 0})

我想选择行,直到总金额达到4234.

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中指出的那样,不可能完全在数据库上实现它,因为它需要支持累积金额。但是,这可以部分地通过使用集合在JVM上实现最终过滤器而不是在数据库上使用问题中采用的相同命令方法来实现。

var test = 4234
db.run(Model.sellOrder
  .filter(_.price <= price)
  .sortBy(_.price.asc)
  .result) map {
    case rows => 
           rows.map(x => { test -= x; x -> test })
          .takeWhile({ case (_,x) => x > 0})
          .map({case (x,_) => x})
   }