Как сделать условную сортировку в запросе scala slick - PullRequest
0 голосов
/ 01 февраля 2019

В настоящее время скользкий запрос:

(for {
      t <- userType if t.user_type === uType
      h <- hand if h.work_item_uid === workItemId &&
                   h.user_uid === userId &&
                   h.user_type_id === t.user_type_id &&
                   h.expires_utc > cutoff
      enc <- tbl if enc.work_item_uid === workItemId &&
                    enc.encounter_uid === h.encounter_uid
    } yield (enc,h.expires_utc,h.sequence))
    .sortBy(_._3)
    .list match {
      case Nil => None
      case nonEmpty =>
        nonEmpty.unzip3 match {
          case (encs,tstamps,_) =>
            Some(ChartQueue((tstamps.map(_.getTime).min - System.currentTimeMillis).toInt, encs))
        }
    }

В tbl есть поле encounter_type, и оно имеет строковое значение, такое как Inpatient, Outpatient и другие.и

В приведенном выше запросе набор данных сортируется по последовательности.Я хочу реализовать условную сортировку на основе encounter_type.

То есть, если тип встречи содержит определенные строки в списке, я хочу, чтобы они были вверху.

Итак, я попробовалследующее:

val encType= List("Inpatient","Observation","Outpatient in a Bed")

и попытался применить запрос что-то вроде

priority <- enc if enc.inSet(encType) 1 else 2

, но я не могу отсортировать его по приоритету.

I 'ищу что-то вроде того, что я строю в сыром SQL:

select encounter_dos, patient_fin, encounter_type, 
if(encounter_type in ('Inpatient','Observation','Outpatient in a Bed'),1,2) as priority 
from cleardb.tbl_encounter 
order by priority, encounter_dos;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...