当前的光滑查询是:
(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
,它具有字符串值,例如“住院病人”,“门诊病人”等。和
在上面的查询中,数据集按顺序排序。我想基于encounter_type
实现条件排序。
也就是说,如果遇到类型在列表中有某些字符串,我希望它们在顶部。
所以我尝试了以下操作:
val encType= List("Inpatient","Observation","Outpatient in a Bed")
并尝试应用类似的查询
priority <- enc if enc.inSet(encType) 1 else 2
但是我无法按优先级对它进行排序。
我正在寻找类似在原始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;