#mysql #sql
Вопрос:
Задача: Просмотреть идентификатор каждого сотрудника и отсортировать по дате ЗАПРОСА. Затем создайте идентификатор типа ОЧЕРЕДИ ОТ и ДО. Поэтому я хотел бы посмотреть, из какой ОЧЕРЕДИ перешел этот сотрудник. Последняя строка QUEUE_TYPE_ID_TO должна быть пустой, так как сотрудник застрял в ОЧЕРЕДИ «ОТ».
Начните с этого: Таблица ABC
ИДЕНТИФИКАТОР СОТРУДНИКА | QUEUE_TYPE_ID_FROM | QUEUE_TYPE_ID_ТО | REQUEST_DATE | PARTION_BY_NUM |
---|---|---|---|---|
1 | R366 | R366 | 3/5/2021 | 1 |
1 | R286 | R366 | 6/5/2020 | 2 |
1 | R286 | R366 | 5/6/2018 | 1 |
1 | R156 | R366 | 2/5/2018 | 1 |
Завершите этим: Таблица XYZ
ИДЕНТИФИКАТОР СОТРУДНИКА | QUEUE_TYPE_ID_FROM | QUEUE_TYPE_ID_ТО | REQUEST_DATE_FROM | REQUEST_DATE_TO |
---|---|---|---|---|
1 | R366 | нулевой | /5/2021 | нулевой |
1 | R286 | R366 | 6/5/2020 | 3/5/2021 |
1 | R156 | R286 | 2/5/2018 | 6/5/2020 |
Комментарии:
1. это называется ppivot, и если вы хотите, чтобы он был динамическим, вам нужен динамический sql, но даже в этом случае способ подключения строк должен быть в облаке, иначе вы не сможете построить отношения aa
2. Я думал сделать заявление о случае, в котором говорится, что если значение queue_type_id_from соответствует значению queue_type_id_to, то измените значение queue_type_id_to на последнее значение queue_type_id_from с последней датой. Вот почему у меня есть partition_by_num в первой таблице.
3. СЛУЧАЙ, КОГДА QUEUE_TYPE_ID_FROM = QUEUE_TYPE_ID_FROM_TO, ЗАТЕМ ЗНАЧЕНИЕ NULL (ВЫБЕРИТЕ QUEUE_TYPE_ID_FROM ИЗ ABC, ГДЕ PARTION_BY_NUM=2) ЗАВЕРШИТЕ QUEUE_TYPE_ID_TO — Это работает?
4. вы должны пересмотреть свою концепцию, чтобы найти рекурсивный CTE, или, если у вас есть более старая версия cte, вам нужно искать hirachys в mysql или rountrip, есть несколько вариантов, но, короче говоря, до сих пор gebigging должен быть maekd, и должны быть хлебные крошки, которые следуют до конца. если у вас есть несколько R286 в качестве начала, вам необходимо определить конечную точку для **каждой ** начальной точки