2017-10-02 1 views
-1

In meiner users Tabelle muss ich die Anzahl der Benutzer nach Benutzername Länge berechnen. Zum Beispiel:MSSQL: berechnen Benutzername Länge

  • 200 Benutzer hat name 1 Verkohlungslänge
  • 500 Benutzer hat Namen 2 Zeichen Länge
  • 1500 Benutzernamen hat 3 Zeichen Länge
  • ...

I erstellte MSSQL-Abfrage:

SELECT 
    TOP 1000 
    LEN(nick) as 'title', 
    Count(*) 
FROM [userstable] 
WITH(NOLOCK) 
GROUP BY title 

Nach Wenn ich es starte ich sehe nächstes Problem:

Spalte 'users_table.Nick' ist in der Auswahlliste ungültig, weil sie weder in einer Aggregatfunktion noch in der GROUP BY-Klausel enthalten ist.

Könnte jemand erklären warum?

+0

Sie können nicht wissen, den Alias-Namen in der Gruppe verwenden, indem Sie – scsimon

Antwort

4

Group by logisch verarbeitet, bevor Select so können Sie nicht dort verwenden alias

SELECT TOP 1000 Len(nick) AS 'title', 
       Count(*) 
FROM [userstable] WITH(NOLOCK) 
GROUP BY Len(nick) 

diesen Artikel lesen auch über NOLOCKBad habits : Putting NOLOCK everywhere

Verwandte Themen