Ich habe diese einfache T-SQL-Abfrage, sie gibt eine Reihe von Spalten aus einer Tabelle aus und verknüpft auch Informationen aus anderen verwandten Tabellen.
Mein Datenmodell ist einfach. Ich habe eine geplante Veranstaltung mit Teilnehmern. Ich muss wissen, wie viele Teilnehmer an jeder Veranstaltung teilnehmen.
Meine Lösung besteht darin, einen CTE hinzuzufügen, der geplante Ereignisse gruppiert und die Anzahl der Teilnehmer zählt.
Auf diese Weise kann ich diese Informationen pro geplantem Ereignis eingeben. Die Abfrage einfach halten.
Ich möchte meine Abfragen jedoch einfach halten. Was kann ich tun, wenn ich in Zukunft während meiner einfachen Abfrage zusätzliche temporäre Ergebnisse haben muss?
Ich würde es wirklich mögen, wenn ich mehrere CTEs haben könnte, aber ich kann nicht, oder? Welche Möglichkeiten habe ich hier?
Ich habe Ansichten und Aktionen auf der Anwendungsdatenebene ausgeschlossen. Ich bevorzuge es, meine SQL-Abfragen zu isolieren.
quelle
[ ,...n ]
in[ WITH <common_table_expression> [ ,...n ] ]
. Beispiel C, "Verwenden mehrerer CTE-Definitionen in einer einzelnen Abfrage", ruft dies explizit auf. Leider ist dieses Beispiel in der Dokumentation für SQL 2008 und nicht enthalten älter (dh das Beispiel wurde nicht bereitgestellt, als das OP die Frage stellte).UNION ALL
Sie können sicherlich mehrere CTEs in einem einzigen Abfrageausdruck haben. Sie müssen sie nur durch ein Komma trennen. Hier ist ein Beispiel. Im folgenden Beispiel gibt es zwei CTEs. Einer wird benannt
CategoryAndNumberOfProducts
und der zweite wird benanntProductsOverTenDollars
.quelle