Um eine Anzahl von Zeilen mit jedem Wert von myNumber
, Graben der DISTINCT
und verwenden stattdessen eine GROUP BY
zugeordnet zu bekommen.
direkteste Beispiel, wiederholen Sie den Ausdruck in der SELECT-Liste in den GROUP BY-Klausel:
SELECT [A_number] + '-' + CONVERT(VARCHAR(10),[zone]) AS myNumber
, COUNT(*) AS cnt
FROM [dbo].[soils]
GROUP
BY [A_number] + '-' + CONVERT(VARCHAR(10),[zone])
Für triviale Sätze, Leistung wird kein Problem sein. Bei größeren Sets kann die Leistung darunter leiden. Die Lösung besteht darin, die Abfrage zu überarbeiten, um vorhandene Indizes zu nutzen, oder entsprechende Indizes hinzuzufügen.
Doing die Gruppe von Operation auf nackten Spalten ist das normative Muster. Dadurch kann ein geeigneter Index verwendet werden. Ohne WHERE-Klausel hätte die beste Wette für einen optimalen Index für diese Abfrage führende Spalten von '(A_number, zone)'. +10. Es gibt einen Randfall, in dem diese Abfrage ein anderes Ergebnis als das Original liefert. Betrachte Zeilen mit '(A_number, zone)' Werten von '('1 -', 'a')' und '('1', '- a')'. – spencer7593