À l'aide de SELECT en HAUT d'une colonne, puis le tri sur une colonne différente
Je suis à l'aide de SQL Server 2005, et je veux à la requête pour les vendeurs de générer le plus de revenus, triés par le nom du vendeur. Ci-dessous est la requête que j'ai essayé. L'intérieur de la sous-requête obtient les 15 plus grands fournisseurs triés par les recettes, et j'ai essayer de l'ordre ceux résultats par le nom du fournisseur.
SELECT Revenue, VendorName
FROM (
SELECT TOP 15
SUM(po.POTotal) AS Revenue
, Vendors.VendorName AS VendorName
FROM PurchaseOrders po
INNER JOIN Vendors ON po.Vendor_ID = Vendors.Vendor_ID
WHERE ...
GROUP BY Vendors.VendorName
ORDER BY Revenue DESC
)
ORDER BY VendorName ASC
Mais cela me donne un message d'erreur:
Msg 156, Niveau 15, État 1, Ligne 14
Syntaxe incorrecte près du mot clé "ORDRE".
Est-il une autre façon de le faire? Je pense que cela pourrait être possible, mais je préfère ne pas le faire de cette façon.
je m'excuse si c'est un doublon, je ne sais même pas quoi chercher pour voir si cela a déjà été demandé.
OriginalL'auteur Kip | 2009-11-11
Vous devez vous connecter pour publier un commentaire.
Ajouter un alias pour la sous-requête:
OriginalL'auteur Charles Bretana
Vous avez besoin pour donner à votre table dérivée d'un alias:
OriginalL'auteur Aaron Bertrand
Je crois que vous pouvez le faire avec une expression de table commune:
OriginalL'auteur Registered User
Vous pouvez également le faire sans une sous-requête si vous aimez --
Essayer cela et voir si cela fonctionne - nous faire le même genre de chose ici, et c'était notre solution...
OriginalL'auteur HedgeHog
Désolé, j'ai oublié le TOP 15 dans la requête ci - dessus: il a besoin d'aller juste avant le sum() fonction d'agrégation.
OriginalL'auteur HedgeHog