J'ai une table de données comme ceci:Rang SQL Server() par groupe
Employee1 Product1 ProductGroup1 Quantity SalesDate
Employee1 Product1 ProductGroup1 Quantity SalesDate
Employee1 Product2 ProductGroup1 Quantity SalesDate
Employee1 Product2 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product1 ProductGroup1 Quantity SalesDate
Employee2 Product2 ProductGroup1 Quantity SalesDate
Employee2 Product2 ProductGroup1 Quantity SalesDate
Il y a plusieurs employés, plusieurs produits, groupes de produits multiples, plusieurs dates de vente. Dans les services de reporting, j'ai une matrice, où le groupe parent est employé, le groupe enfant est Produit et le groupe de colonnes est la date de vente. J'ai besoin de classer les produits, afin d'obtenir le premier 5 et mettre l'autre dans une autre liste. Le problème est que je dois classer le produit dans le groupe d'employés et que le produit peut avoir plusieurs dates de vente, alors que j'ai besoin de tout évaluer. En SQL maintenant j'ai: Rank() Over (partition by DataTable.ProductGroup1, DataTable.Employee Order by Sum(Quantity) desc) as Rank
Mais cela me donne un mauvais résultat, parce que le même produit a une valeur de classement différente, parce que la fonction de classement se classe en utilisant la quantité dans différentes dates de vente. comment dois-je écrire sql, donc il me renvoie les données avec toutes les dates de vente, les rangs d'autobus en utilisant la quantité additionnée de toutes les dates?
EDIT:
Quelques jeux de données pour expliquer ce que je reçois et ce dont j'ai besoin.
//DATA I HAVE
Employee_col Product_col ProductGroup_col Quantity_col SalesDate_col
Employee1 Product1 ProductGroup1 100 2012-01
Employee1 Product1 ProductGroup1 200 2012-02
Employee1 Product2 ProductGroup1 50 2012-01
Employee1 Product2 ProductGroup1 80 2012-02
Employee2 Product1 ProductGroup1 200 2012-01
Employee2 Product1 ProductGroup1 70 2012-02
Employee2 Product2 ProductGroup1 20 2012-01
Employee2 Product2 ProductGroup1 450 2012-02
//RESULT I GET
Employee_col Product_col ProductGroup_col Quantity_col SalesDate_col Rank_col
Employee1 Product1 ProductGroup1 100 2012-01 2
Employee1 Product1 ProductGroup1 200 2012-02 1
Employee1 Product2 ProductGroup1 50 2012-01 4
Employee1 Product2 ProductGroup1 80 2012-02 3
Employee2 Product1 ProductGroup1 200 2012-01 2
Employee2 Product1 ProductGroup1 70 2012-02 3
Employee2 Product2 ProductGroup1 20 2012-01 4
Employee2 Product2 ProductGroup1 450 2012-02 1
//RESULT I NEED
Employee_col Product_col ProductGroup_col Quantity_col SalesDate_col Rank_col
Employee1 Product1 ProductGroup1 100 2012-01 1
Employee1 Product1 ProductGroup1 200 2012-02 1
Employee1 Product2 ProductGroup1 50 2012-01 2
Employee1 Product2 ProductGroup1 80 2012-02 2
Employee2 Product1 ProductGroup1 200 2012-01 2
Employee2 Product1 ProductGroup1 70 2012-02 2
Employee2 Product2 ProductGroup1 20 2012-01 1
Employee2 Product2 ProductGroup1 450 2012-02 1
Pouvez-vous fournir des données d'échantillons, la sortie de requête incorrecte (ce que vous » ve essayé), et la sortie attendue de la requête? J'ai un peu de mal à te suivre. –
classement à faire, produit sage ou productgroup sage? –
@JNM Il est probable que vous n'obtiendrez pas de réponse car la question n'est pas claire. Pouvez-vous s'il vous plaît donner des exemples spécifiques, des exemples d'entrées et des résultats attendus afin que nous puissions vous aider. – 18bytes