У меня есть представление, которое выглядит так:
package_id package_line status_a status_b
1 1 NOT_STARTED FAILED
1 2 STARTED STARTED
1 3 FAILED NOT_STARTED
2 1 COMPLETE STARTED
2 2 COMPLETE NOT_STARTED
и так далее, для нескольких тысяч строк.Status_a и status_b - это отдельные несвязанные статусы (на самом деле они представляют собой, выполняется ли пакет в системе a и в системе b).
Мне нужна сводка по package_id, чтобы получить значение
package_id status_a status_b
1 FAILED FAILED
2 COMPLETE NOT_STARTED
Правила объединения строк пакета:
1. If any package line has failed, the package has failed.
2. If all package lines are complete, the package is complete.
3. If all package lines are NOT_STARTED, the package has not started.
4. Otherwise, the package is started (i.e. a combination of started, not_started, and complete would summarize as STARTED).
Поэтому я пытаюсь найти запрос для создания этого резюме.Я хотел бы опубликовать пример кода, но я действительно в растерянности.Предположительно я хочу GROUP_BY package_id, но что я могу использовать в качестве агрегатной функции, которая позволила бы мне применять перечисленные правила?
Если это поможет, у меня есть контроль над тем, как сообщается о статусах в пакетена уровне строки, чтобы я мог сообщить о числовом статусе (хотя мне нравится, чтобы он читался человеком только для здравого смысла).