SQL Server kann "keine Aggregatfunktion für einen Ausdruck ausführen, der ein Aggregat oder eine Unterabfrage enthält", Sybase jedoch

Dieses Problem wurde bereits diskutiert, aber keine der Antworten befasst sich mit meinem spezifischen Problem, da es sich um unterschiedliche where-Klauseln in der inneren und äußeren Auswahl handelt. Diese Abfrage wurde einwandfrei unter Sybase ausgeführt, gibt jedoch den Fehler im Titel dieses Beitrags aus, wenn sie unter SQL Server ausgeführt wird. Die Abfrage ist kompliziert, aber die allgemeine Gliederung der Abfrage lautet:

select sum ( t.graduates -
    ( select sum ( t1.graduates )
      from table as t1
      where t1.id = t.id and t1.group_code not in ('total', 'others' ) ) )
from table as t
where t.group_code = 'total'

Im Folgenden wird die Situation beschrieben, die ich zu lösen versuche:

Alle Gruppencodes stehen für Rennen mit Ausnahme von "total" und "others"Der Gruppencode 'total' repräsentiert die Gesamtzahl der Absolventen aller RennenDa jedoch mehrere Rennen fehlen, addieren sich die Absolventenzahlen der Rennen möglicherweise nicht zu den Gesamtzahlen der AbsolventenDiese fehlenden Daten müssen berechnet werden

Gibt es eine Möglichkeit, dies mit abgeleiteten Tabellen oder Joins neu zu schreiben, um die gleichen Ergebnisse zu erzielen?

Aktualisieren: ich erschufBeispieldaten und 3 Lösungen für mein spezielles Problem (2 beeinflusst von sgeddes). Die eine, die ich hinzugefügt habe, beinhaltet das Verschieben der korrelierten Unterabfrage in eine abgeleitete Tabelle in der FROM-Klausel. Danke für die Hilfe Jungs!

Antworten auf die Frage(1)

Ihre Antwort auf die Frage