Gegeben
Tabelle A
%Vor%Tabelle B
%Vor% Ich möchte die Vorkommen jedes FkId
-Werts zählen:
Nun möchte ich einfach auch den Namen von Table A
ausgeben.
Dies wird nicht funktionieren:
%Vor% weil a.Name
nicht in der GROUP BY
-Klausel enthalten ist (erzeugt is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
error).
Der Punkt ist, sich von der Ausgabe wie folgt zu bewegen
%Vor%um so auszugeben
%Vor%Es gibt ziemlich viele Übereinstimmungen in SO für diese Fehlermeldung, aber einige, z. Ссылка haben Kommentare wie "erzeugt 3 Scans auf dem Tisch, anstatt 1, also wird nicht skaliert." p>
Wie kann ich effizient ein Feld aus der verknüpften Table B
(die eine 1: 1-Beziehung zu FkId
hat) in die Abfrageausgabe einfügen?
Sie können etwas wie folgt ausprobieren:
%Vor% Erstellen Sie ein CTE (Common Table Expression), um die Gruppierung / Zählung auf Ihrem Table B
zu bearbeiten, und verbinden Sie dieses Ergebnis (eine Zeile pro FkId
) mit Table A
und greifen Sie weitere Spalten von Table A
in an Ihr endgültiges Ergebnis festgelegt.
Haben Sie versucht, das Feld der Gruppe um?
hinzuzufügen? %Vor%Tags und Links sql sql-server aggregate-functions