Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden Sie einen CTE viele Male

Ein CTE ist im Grunde eine Wegwerfansicht. Es bleibt nur für eine einzige Anweisung bestehen und verschwindet dann automatisch.

Ihre Optionen umfassen:

  • Definieren Sie den CTE neu ein zweites Mal. Dies ist so einfach wie Kopieren und Einfügen von WITH... bis zum Ende der Definition bis vor Ihren SET .

  • Setzen Sie Ihre Ergebnisse in ein #temp Tabelle oder eine @table Variable

  • Materialisieren Sie die Ergebnisse in einer echten Tabelle und referenzieren Sie diese

  • Ändern Sie leicht zu nur SELECT COUNT von Ihrem CTE:

.

SELECT @total = COUNT(*)
FROM Players p 
INNER JOIN Teams t 
    ON p.IdTeam=t.Id 
INNER JOIN Leagues l 
    ON l.Id=t.IdLeague
WHERE [email protected]