如何在 Slick 中使用 group by 执行多项求和?

How to perform a multi sum with group by in Slick?

我在 sql 中有以下查询:

SELECT TASK_ID, TOTAL_WRITER_SUCCESS as WRITER_SUCCESSES, TOTAL_WRITER_ERRORS as WRITER_ERRORS,
SUM(if (SERVICE = 'Reader' AND  ERROR IS NOT NULL,1,0)) AS READER_ERRORS,
SUM(if (SERVICE = 'Reader' AND ERROR IS  NULL,1,0)) AS READER_SUCCESSES,
SUM(if (SERVICE = 'Writer' AND  ERROR IS NOT NULL AND (TOTAL_WRITER_SUCCESS IS NULL AND TOTAL_WRITER_ERRORS IS NULL),1,0)) AS WRITER_CURRENT_ERRORS
FROM TASK_EVENT_STATUS GROUP BY TASK_ID 

我正在尝试用 Slick 表达它。

我设法表达了这样的一笔数:

taskEventStatuses.groupBy(tes => tes.taskId).map {
      case (taskId, group)  => (taskId, group.map { tes =>
        Case If tes.error.isEmpty && tes.service === Service.Reader.asInstanceOf[Service] Then 1 Else 0
      }.sum) 

我没有在 Slick 中找到所有求和的方法?

这对我有用:

taskEventStatuses.groupBy(_.taskId).map {
  case (taskId, group)  =>
    (group.map( tes => Case If tes.error.isEmpty && tes.service === Service.Reader.asInstanceOf[Service] Then 1 Else 0).sum
      , group.map( tes => Case If tes.error.isDefined && tes.service === Service.Reader.asInstanceOf[Service] Then 1 Else 0).sum
      , group.map( tes => Case If tes.error.isDefined && tes.service === Service.Writer.asInstanceOf[Service] Then 1 Else 0).sum
    ,taskId)
  }