У меня есть следующие данные
GROUP_ID INDEX
NULL 1
1 2
NULL 3
1 4
NULL 5
2 6
2 7
Я хочу получить поле, содержащее:
- , если group_id не равен NULL, наименьший индекс в этой группе
- если group_id IS NULL, то индекс из этой строки
Результирующий набор данных для приведенного выше примера будет выглядеть следующим образом:
GROUP_ID INDEX GROUP_INDEX_MIN
NULL 1 1
1 2 2
NULL 3 3
1 4 2
NULL 5 5
2 6 6
2 7 6
В Oracle я бы разрешил это с помощью(CASE WHEN group_id IS NOT NULL THEN MIN(index) OVER (PARTITION BY group_id) ELSE group_id END)
, но, поскольку MySQL не поддерживает это, я действительно не знаю, как поступить :) Я могу решить эту проблему, используя подзапрос, который извлекает минимальные значения для каждой группы и затем присоединяется к ней, но я думаю, что тамдолжно быть более элегантным решением.
Если вам нужна дополнительная информация, пожалуйста, спросите.Благодаря.