Entschuldigung für den uninformativen Titel, ich weiß nicht, wie ich diese Operation benennen soll. Hier ist ein Beispiel, von dem ich hoffe, dass es hilft.SQL - Wie funktioniert diese Join-ähnliche Operation?
Wir haben Benutzer, für die wir Ereignisse protokollieren. Ereignisse können unterschiedlicher Art sein. Wir möchten einen Bericht (eine neue Tabelle) erzeugen, der sagt, wenn ein Ereignis für einen Benutzer aufgetreten ist; zum Beispiel:
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
Zusätzliche Einschränkungen:
- Wir wissen nicht, die Ereignistypen vorher (weder ihren Namen oder die Anzahl der verschiedenen Arten)
- vollständig in der Datenbank geschehen hat
, weil Sie nicht tun Wenn Sie die Anzahl oder Namen von Ereignistypen kennen, die Sie als Spalten haben möchten, müssen Sie dynamic sql verwenden, um diese Details zu ermitteln und eine Auswahlanweisung zu erstellen, die bedingte Aggregation wie die Antwort von @sgeddes verwendet. – Matt