Gruppe Nach Aliasname

8

Ich habe die folgende T-SQL-Abfrage:

%Vor%

Ich erhalte den folgenden Fehler:

  

Msg 207, Ebene 16, Status 1, Zeile 15
  Ungültiger Spaltenname 'DiffDate'.

Die Idee hinter dieser Abfrage ist, dass ich die Anzahl der gelösten Fälle (geschlossen) innerhalb von wie vielen Tagen erreichen möchte.

Beispiel:

Tage

1 = 3 Fälle

2 = 50 Fälle

3 = 20 Fälle

Wie kann ich das erreichen?

    
Yousi 05.05.2013, 06:59
quelle

5 Antworten

18

Sie müssen den gesamten Ausdruck in der GROUP BY -Klausel verwenden oder einfach die gesamte Anweisung in eine Unterabfrage einbinden und die Gruppierung für die äußere Anweisung durchführen.

Der Grund, warum Sie ALIAS nicht in der GROUP BY -Klausel verwenden können, die auf der gleichen Ebene der SELECT -Anweisung erstellt wird, liegt darin, dass GROUP BY vor der SELECT -Klausel ausgeführt wird, in der ALIAS wird erstellt.

Dies ist die SQL-Reihenfolge der Operation:

  • FROM-Klausel
  • WHERE-Klausel
  • GROUP BY-Klausel
  • HAVING-Klausel
  • SELECT-Klausel
  • ORDER BY-Klausel

Versuchen Sie diese Abfrage,

%Vor%     
John Woo 05.05.2013, 07:03
quelle
3

Sie können keinen Alias ​​in der group by-Klausel verwenden.

Verwenden Sie entweder eine abgeleitete Tabelle oder in Ihrem Fall entfernen Sie einfach die 2. SELECT.

%Vor%     
Ahmed 05.05.2013 07:43
quelle
0

Würden Sie damit nicht dieselben Ergebnisse erzielen?

%Vor%

Ich bin ein Novize bei SQL, vielleicht verstehe ich es nicht richtig. Ich sah den obigen Kommentar mit der genauen Syntax, aber ich wusste nicht, ob es richtig war ...

    
DK91 23.03.2015 21:04
quelle
0

Dies ist ein einfaches Beispiel für Implementierungsdiskussion

%Vor%     
user4848354 29.04.2015 21:40
quelle
0

Sie können CROSS APPLY verwenden, um einen Alias ​​zu erstellen und ihn wie folgt in der GROUP BY -Klausel zu verwenden:

%Vor%     
Ricardo 13.12.2016 18:55
quelle

Tags und Links