Доброго времени суток.
Т.к. нет времени на гуглинг, позволю себе попробовать спросить здесь. Через пару часов поищу сам. :)
Есть подзапрос, возвращающий коллекцию документов, среди которых необходимо по двум полям (одно varchar2, второе number(1,0) aka boolean) выставить документам «вес», выбрав при этом любой из тех, у которых этот вес является наибольшим.
Псевдокод проставления весов на java:
List<SomeAbstractDoc> docs = obtainingFromSomewhere();
for (SomeAbstractDoc doc: docs) {
int weight = 0;
switch (status) {
case DONE:
weight = 1;
break;
case DRAFT:
weight = 4;
break;
default:
if (doc.isCorrection()) {
weight = 2;
} else {
weight = 3;
}
}
doc.setWeight(weight); // этого позора здесь вообще-то нет, там враппер над документом, но к постановке задачи не относится
}
Вопрос Oracle господам - вы не в курсе, есть ли под эту хотелку аналитическая функция, или придется делать dirty хак?
Спасибо заранее.