Всем привет!
Сначала сам вопрос:
как из выборки:
Оставить только строки:
А вот зачем это:
Есть таблица с событиями.
мне надо связать два типа события.
В одном отчетном периоде клиент может отключить старую услугу и подключить новую, вот надо в строку вывести код событий отключения и подключения, чтобы потом можно было сравнить сами услуги (старую и новую)
первый уровень усложнения: у клиента может быть несколько услуг, причём отключить он может две, а подключить одну. Благо требования достаточно мягкие, чтобы можно было просто сцепить события в порядке их возникновения: это я решил SQL запросом пронумеровал ссобытия попарно и сджоинил по его номеру.
но такой механизм не отвечает реалиям бизнесзадачи.
Второе усложнение: отчетный период закрывается до 15 числа месяца, следующего за отчетным. Такая мелочь привела к тому, что события отключения обычно в конце месяца, а подключения в начале следующего, и аналитики вручную сцепляют эти события.
в попытках решить задачу я смог составить декартово произведение всех возможных событий в рамках одного клиента, если она попадают в один отчётный период. Только сложность в том, что событие в числах месяца с 1 по 15 могут попасть сразу в два отчетных периода (прошлый и текущий).
Данную задачу можно было бы решить, если можно бы было создать таблицу с двумя столбцами с констрейнтамии на уникальность в каждомъ. Тогда, полученный запрос просто бы пытался вставить в эту таблицу данные, и игнорировал бы ошибки, на выходе таблица содержала бы только корректные связи событий.
НО. Create table нельзя.
Соответственно, надо каким либо образом симулировать проверку на уникальность по каждому из двух столбцов.
Сам запрос вызывается из MS SSAS 2017 Tabular к хранилищу на postgresql 8.2, поэтому из инструментов только M и SQL...
Сначала сам вопрос:
как из выборки:
left_id | right_id |
1 | 1 |
2 | 1 |
1 | 3 |
2 | 3 |
3 | 3 |
Left_id | right_id |
1 | 1 |
2 | 3 |
Есть таблица с событиями.
мне надо связать два типа события.
В одном отчетном периоде клиент может отключить старую услугу и подключить новую, вот надо в строку вывести код событий отключения и подключения, чтобы потом можно было сравнить сами услуги (старую и новую)
первый уровень усложнения: у клиента может быть несколько услуг, причём отключить он может две, а подключить одну. Благо требования достаточно мягкие, чтобы можно было просто сцепить события в порядке их возникновения: это я решил SQL запросом пронумеровал ссобытия попарно и сджоинил по его номеру.
но такой механизм не отвечает реалиям бизнесзадачи.
Второе усложнение: отчетный период закрывается до 15 числа месяца, следующего за отчетным. Такая мелочь привела к тому, что события отключения обычно в конце месяца, а подключения в начале следующего, и аналитики вручную сцепляют эти события.
в попытках решить задачу я смог составить декартово произведение всех возможных событий в рамках одного клиента, если она попадают в один отчётный период. Только сложность в том, что событие в числах месяца с 1 по 15 могут попасть сразу в два отчетных периода (прошлый и текущий).
Данную задачу можно было бы решить, если можно бы было создать таблицу с двумя столбцами с констрейнтамии на уникальность в каждомъ. Тогда, полученный запрос просто бы пытался вставить в эту таблицу данные, и игнорировал бы ошибки, на выходе таблица содержала бы только корректные связи событий.
НО. Create table нельзя.
Соответственно, надо каким либо образом симулировать проверку на уникальность по каждому из двух столбцов.
Сам запрос вызывается из MS SSAS 2017 Tabular к хранилищу на postgresql 8.2, поэтому из инструментов только M и SQL...