Извините за неинформируемое название, я не знаю, как назвать эту операцию. Вот пример, который, я надеюсь, поможет.SQL - Как выполнить эту операцию соединения?
У нас есть пользователи, для которых мы регистрируем события. События могут быть разных типов. Мы хотим создать отчет (новую таблицу), который будет указывать, если событие произошло для пользователя; например:
Events x EventInfo = UserEvent
--- --- ---
UserId | EventId EventId | Type UserId | login | verify
------------------ ----------------- ------------------------
1 | 1 1 | login 1 | True | True
1 | 2 2 | verify 2 | False | False
2 | 3 3 | login
Дополнительные ограничения:
- Мы не знаем, типы событий, предварительно (ни их имя или число различных типов)
- должно происходить исключительно в базе данных
, потому что вы не знайте количество или имена типов событий загодя, которые вам нужны в качестве столбцов, вам нужно будет использовать динамический sql, чтобы обнаружить эти детали и создать инструкцию select, используя условную агрегацию, такую как ответ @sgeddes. – Matt