MS-SQL sortie de tri dans l'ordre décroissant
J'ai ce MS-SQL de la requête avec des milliers de ligne des enregistrements dans la base de données:
SELECT DISTINCT TOP 7 DATENAME(MM, mydatetime) + ' ' + CAST(DAY(mydatetime) AS VARCHAR(2)) as thedate
, MONTH(mydatetime)
, DAY(mydatetime)
, COUNT(Page) as totalcount
, count(DISTINCT Page) as visitors
FROM someTable
WHERE Page LIKE '%AEC%'
GROUP BY DATENAME(MM, mydatetime) + ' ' + CAST(DAY(mydatetime) AS VARCHAR(2))
, MONTH(mydatetime)
, DAY(mydatetime)
ORDER BY MONTH(mydatetime) DESC
, DAY(mydatetime) DESC
Il sera de sortie ce:
thedate | totalcount | visitors
-----------------------------------
October 17 | 4 | 1
October 15 | 1 | 1
October 12 | 1 | 1
October 3 | 3 | 3
October 2 | 42 | 22
September 28| 2 | 1
September 21| 14 | 10
Mon problème est que j'ai tout simplement pas de sortie ce dans l'ordre décroissant de sorte qu'il ressemble à ceci:
thedate | totalcount | visitors
-----------------------------------
September 21| 14 | 10
September 28| 2 | 1
October 2 | 42 | 22
October 3 | 3 | 3
October 12 | 1 | 1
October 15 | 1 | 1
October 17 | 4 | 1
De sorte que toute aide est grandement appréciée.
Votre exemple de sortie me semble être dans l'ordre CROISSANT de ne pas l'ordre DÉCROISSANT. ASCENDANT va partir plus tôt à plus tard. DESCENDANT va de plus tard plus tôt.
Ce qui vous fait penser que votre sortie désirée est sur l'ordre décroissant?, voulez-vous dire par ordre croissant?, dans ce cas, il suffit de prendre le
Si je fais ça, il me donnera des 7 premiers enregistrements de la base de données datant de retour de l'année dernière
De sorte que votre condition est différente que celle que vous avez posté. Vous avez besoin de les 7 derniers dossiers, est retourné dans l'ordre croissant
Qui est correct.
Ce qui vous fait penser que votre sortie désirée est sur l'ordre décroissant?, voulez-vous dire par ordre croissant?, dans ce cas, il suffit de prendre le
DESC
Si je fais ça, il me donnera des 7 premiers enregistrements de la base de données datant de retour de l'année dernière
De sorte que votre condition est différente que celle que vous avez posté. Vous avez besoin de les 7 derniers dossiers, est retourné dans l'ordre croissant
Qui est correct.
OriginalL'auteur crashtestxxx | 2012-10-18
Vous devez vous connecter pour publier un commentaire.
Pour vos besoins réels, vous pouvez utiliser votre requête comme une table dérivée et de l'ordre qui en résultent dans la façon dont vous le souhaitez:
+1 pour la réponse à la mauvaise question 🙂
eh bien, je suis en espérant que c'est ce que l'op veut vraiment 🙂
Merci beaucoup, c'est exactement ce dont j'avais besoin. Désolé si je n'ai pas été claire à ma question.
Content que ça a aidé
OriginalL'auteur Lamak
Vous devez supprimer le
DESC
de votre clause ORDER BY.Votre résultat est exactement à l'inverse de la commande en raison d'DESC!
La clause ORDER BY ne modifie pas l'ensemble des enregistrements que vous obtiendrez. Il change seulement de l'ordre de la résultante de ces enregistrements. Si vous n'obtenez pas le droit de dossiers, cela signifie que quelque chose est mal, avant ou dont la clause where. Je remarque que votre requête a aucune mention de "ANNÉE"? Pourrait être un problème?
Sur la deuxième pensée, vous pouvez faire un select imbriqué pour obtenir le résultat souhaité.
Select * from (select.....//your current query) TableA ORDER BY month, day;
OriginalL'auteur Vinod Vishwanath
Pour obtenir l'ordre que vous spécifiez, y compris seulement les dates que vous désirez dans les résultats de retour, vous devez supprimer le desc et ajouter un filtre de date pour votre clause where.
Qui peut également vous permettre de se débarrasser de la partie supérieure déclaration si vos faites de votre filtre.
WHERE mydatetime> GETDATE()-8 AND Page LIKE '%AEC%'
, mais il me donne des bêtises des données en retour.GETDATE()-8 que depuis 8 jours. La plupart des enregistrements dans votre exemple se produire plus tôt que 8 jours.
Aussi, je recommande DATE_ADD w3schools.com/sql/func_date_add.asp
DATE_ADD est Très utile aussi. Je vous remercie.
Dans ce cas, l'utilisation DateAdd msdn.microsoft.com/en-us/library/ms186819(v=sql.105).aspx ne sais Pas pourquoi je pensais que vous étiez à l'aide de MySQL - je voir votre question titre maintenant.
OriginalL'auteur RThomas