Ich habe Daten im Datetime-Format gespeichert, d. H. 2016-01-20 03:00:11.000
.GROUP BY und ORDER BY Datum als Monat
Mein Ziel ist es, Daten im Monatsformat (String) anzuzeigen und nach Monat zu sortieren.
Was ich will, bekommen (um nach Monaten) -
+----------+-------+
| Month | Count |
+----------+-------+
| January | 87 |
| February | 64 |
| March | 48 |
| April | 67 |
| May | 49 |
+----------+-------+
... rest of months
Was erhalte ich (Bestellen von Alphabeten nicht Monate) -
+-----------+-------+
| Month | Count |
+-----------+-------+
| April | 87 |
| August | 64 |
| December | 48 |
| February | 67 |
| January | 49 |
| July | 41 |
| June | 44 |
| March | 71 |
| May | 62 |
| November | 51 |
| October | 44 |
| September | 48 |
+-----------+-------+
Mein Versuch -
SELECT DATENAME(MONTH,[mydate]) as Month, count([ID]) AS Count
FROM [dbo].[mytable]
group by DATENAME(MONTH,[mydate])
Attempt (nicht in Betrieb), um zu bestellen - wegen der Aggregatfunktion
SELECT DATENAME(MONTH,[mydate]) as Month, count([mydate]) AS Count
FROM [dbo].[mytable]
group by DATENAME(MONTH,[mydate])
ORDER BY MONTH([mydate])
Erhalten dieses Fehlers verwendete unsachgemäß
es ist nicht in einer Aggregatfunktion oder die GROUP BY-Klausel enthalten.
Ich bin mir nicht sicher, wie in einem solchen Szenario zu verfahren ist. Jede Hilfe wird geschätzt.
Ihre Abfrage funktioniert gut, aber wenn ich versuche, Monat und DateCount mit Unterabfrage zu wählen, bekomme ich diesen Fehler - Die ORDER BY-Klausel ist ungültig in Ansichten, Inline-Funktionen, abgeleiteten Tabellen, Unterabfragen und allgemeinen Tabellenausdrücken , es sei denn, TOP, OFFSET oder FOR XML wird ebenfalls angegeben. –
Es ist nicht erforderlich, sie in die Auswahlliste aufzunehmen. Die "Gruppe von" und "Ordnung von" wäre ausreichend. –
@MartinSmith ist richtig, keine Notwendigkeit, die Monatszahl in der SELECT-Klausel zu haben, wichtig ist, es in der Gruppenklausel zu haben. Ich habe meine Antwort aktualisiert. – trincot