Spalte effizient in die Gruppe nach SQL-Abfrage einbeziehen

8

Gegeben

Tabelle A

%Vor%

Tabelle B

%Vor%

Ich möchte die Vorkommen jedes FkId -Werts zählen:

%Vor%

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?

    
Eric J. 06.07.2012, 20:37
quelle

3 Antworten

12

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.

    
marc_s 06.07.2012, 20:43
quelle
3

Haben Sie versucht, das Feld der Gruppe um?

hinzuzufügen? %Vor%     
Mike Shepard 06.07.2012 20:42
quelle
0
%Vor%     
germi 06.07.2012 20:48
quelle