Tim--97 0 Geschrieben 26. Februar 2021 Melden Geschrieben 26. Februar 2021 Hallo, ich habe folgende Abfrage SELECT TOP 20 b.ServiceID, count(b.Consumer) AS 'Anzahl Nutzer' FROM Table1 AS b WHERE b.Type = 10 and b.Status = 1 GROUP BY b.ServiceID ORDER BY [Anzahl Nutzer] desc Ich wurde nun gerne aus Table1 aber zusätzlich noch das Attribut "b.Name" anzeigen lassen. Wie kann ich das machen? Wenn ich es im Select mit angebe kommt natürlich der Fehler dass es weder eine Aggregatsfunktion ist noch in Group By steht. Ich möchte beides aber auch nicht, da ich nur nach b.ServiceID gruppieren will. Danke für jede Hilfe.
Dukel 468 Geschrieben 26. Februar 2021 Melden Geschrieben 26. Februar 2021 Wie soll das gehen? Woher soll die Abfrage wissen, welcher Name genutzt werden soll?
Tim--97 0 Geschrieben 26. Februar 2021 Autor Melden Geschrieben 26. Februar 2021 vor 17 Minuten schrieb Dukel: Wie soll das gehen? Woher soll die Abfrage wissen, welcher Name genutzt werden soll? In der Abfrage direkt nicht, aber ist das eventuell mit einer 2. Abfrage möglich? Möchte aber das beide Results zusammengefasst werden (z.B. durch UNION) Weiß aber nicht ob das so in dem Fall möglich ist oder wenn ja wie.
Dukel 468 Geschrieben 26. Februar 2021 Melden Geschrieben 26. Februar 2021 (bearbeitet) Bei einer Aggregierung müssen alle auszugebenden Spalten auch aggregiert werden. Bei mehrere Namen innerhalb einer Service ID muss man das eben auch aggregieren (zusammenführen aller Namen, Gruppen pro Name, der erste oder letzte (max, min) Name,...). EDIT: Evtl. hilft: https://docs.microsoft.com/en-us/sql/t-sql/functions/string-agg-transact-sql?view=sql-server-ver15 bearbeitet 26. Februar 2021 von Dukel
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden