Мне нужно отправить данные пользователям, которые подписываются на события. Эти события происходят, когда состояние удаляется или добавляется в список состояний, связанных с группой.
Некоторый контекст: у моих данных есть группы, и у каждой группы есть список состояний, которые называются состояниями подчиненных лидов. Группы могут иметь столько состояний сублидов, сколько им нужно.
Таким образом, у группы 1 могут быть IA, WY и NY в качестве сублидов, или она может иметь только IA, или может не иметь ни одного.
Мой вопрос касается 3 разных таблиц.
- Таблица под названием
group_sublead_state
, в которой содержатся записи для каждого состояния сублида, принадлежащего группе - Таблица аудита под названием
sublead_state_audit
, которая содержит информацию о том, когда сублид добавляется или удаляется из группы. - Таблица под названием
sublead_change_results
, которая появится в электронной почте пользователя, когда состояние, на которое они подписаны, будет удалено или добавлено в список состояний сублидов группы (эта таблица должна быть результатом моего запроса. Я не могу создать эту таблицу, сделайте вставки , удаляет или обновляет. Это строго результаты большого длинного уродливого запроса на выборку, который объединяет две другие таблицы вместе с парой таблиц, которые содержат другую информацию, такую как имена групп и т. Д. (Другие таблицы не имеют значения))
Вот таблицы с некоторыми данными:
group_sublead_state
group_id state
1 IA
1 WY
2 NY
2 OH
2 NV
Эта таблица говорит нам о том, что есть две группы, одна с двумя состояниями сублидов, другая с тремя состояниями сублидов.
Вот таблица sublead_state_audit
group_id state_added state_removed
1 none MO
1 IA none
2 NY none
2 OH none
2 none CA
Мы видим из таблицы аудита, что самые последние изменения заключаются в том, что
- group_id 1 удалил MO и добавил IA
- В group_id 2 добавлены NY и OH, а CA удален
Таким образом, таблица sublead_change_results должна выглядеть следующим образом.
group_id old_states new_states
1 MO,WY IA,WY
2 CA,NV NY,OH,NV
Таким образом, столбец new_states довольно прост, и я уже завершил его, используя функцию LISTAGG
(мы будем называть этот список для каждой группы current_state_list
). Однако столбец old_states... здесь мне нужна помощь.
Я должен использовать ресурсы из этих таблиц для компиляции списка, разделенного запятыми, в столбце old_states. До сих пор я думал о том, чтобы попытаться использовать логику, уже созданную для столбца new_states. Итак, для каждого group_id я буду удалять состояния из current_states_list
, которые находятся в столбце state_added таблицы sublead_state_audit
; и я добавлю состояния к current_states_list
, которые находятся в столбце state_removed файла sublead_state_audit
.
Это вообще возможно с LISTAGG? Есть ли другой способ сделать это? Любая помощь будет принята с благодарностью.