Je possède ce jeu de données à l'aide de Microsoft SQL Server Management StudioClassement par 2 différents niveaux de partitionnement/regroupement
Category|pet name| date |food price|vet expenses|vat
A | jack |2017-08-28| 12.98 | 2424 |23
A | jack |2017-08-29| 2339 | 2424 |23
A | smithy |2017-08-28| 22.35 | 2324 |12
A | smithy |2017-08-29| 123.35 | 2432 |23
B | casio |2017-08-28| 11.38 | 44324 |32
B | casio |2017-08-29| 2.24 | 3232 |43
B | lala |2017-08-28| 343.36 | 42342 |54
B | lala |2017-08-29| 34.69 | 22432 |54
C | blue |2017-08-28| 223.02 | 534654 |78
C | blue |2017-08-29| 321.01 | 6654 |67
C | collie |2017-08-28| 232.05 | 4765 |43
C | collie |2017-08-29| 233.03 | 4654 |65
Ce que je veux faire est de rang par prix des denrées alimentaires, mais le groupe par catégorie, ordre par catégorie, animal familier, date et ensuite classer par dépenses vétérinaires, mais grouper par catégorie, classer par catégorie, nom animal, date et ensuite classer par tva, mais grouper par catégorie, classer par catégorie, nom animal, date.
Je pense que ce sera une déclaration de jointure pour le tableau ci-dessus?
Quelque chose exactement comme ci-dessous:
Category|pet name| date |food price|vet expenses|vat|Rankfp|Rankve|Rankvat
A | jack |2017-08-28| 12.98 | 2424 |23 | 2 | 1 |1
A | jack |2017-08-29| 2339 | 2424 |23 | 1 | 2 |1
A | smithy |2017-08-28| 22.35 | 2324 |12 | 1 | 2 |2
A | smithy |2017-08-29| 123.35 | 2432 |22 | 2 | 1 |2
B | casio |2017-08-28| 11.38 | 44324 |32 | 2 | 1 |2
B | casio |2017-08-29| 2.24 | 3232 |43 | 2 | 2 |2
B | lala |2017-08-28| 343.36 | 42342 |54 | 1 | 2 |1
B | lala |2017-08-29| 34.69 | 22432 |54 | 1 | 1 |1
C | blue |2017-08-28| 223.02 | 534654 |78 | 2 | 1 |1
C | blue |2017-08-29| 321.01 | 6654 |67 | 1 | 1 |1
C | collie |2017-08-28| 232.05 | 4765 |43 | 1 | 2 |2
C | collie |2017-08-29| 233.03 | 4654 |65 | 2 | 2 |2
NB: ce n'est pas nécessaire dans la sortie finale, mais pour le rendre plus facile à lire que j'ai commandé le résultat par catégorie, nom d'animal de compagnie, date:
Category|pet name| date |food price|vet expenses|vat|Rankfp|Rankve|Rankvat
A | jack |2017-08-28| 12.98 | 2424 |23 | 2 | 1 |1
A | smithy |2017-08-28| 22.35 | 2324 |12 | 1 | 2 |2
A | jack |2017-08-29| 2339 | 2424 |23 | 1 | 2 |1
A | smithy |2017-08-29| 123.35 | 2432 |22 | 2 | 1 |2
B | casio |2017-08-28| 11.38 | 44324 |32 | 2 | 1 |2
B | lala |2017-08-28| 343.36 | 42342 |54 | 1 | 2 |1
B | lala |2017-08-28| 343.36 | 42342 |54 | 1 | 2 |1
B | lala |2017-08-29| 34.69 | 22432 |54 | 1 | 1 |1
C | blue |2017-08-28| 223.02 | 534654 |78 | 2 | 1 |1
C | collie |2017-08-28| 232.05 | 4765 |43 | 1 | 2 |2
C | blue |2017-08-29| 321.01 | 6654 |67 | 1 | 1 |1
C | collie |2017-08-29| 233.03 | 4654 |65 | 2 | 2 |2
Le code que j'ai ci-dessous ne se classe que par catégorie, mais ne se regroupe pas par prix des aliments, frais vétérinaires et TVA.
RANK()OVER(PARTITION BY [Category], [Date] order by [Category] ,[Pet Name],[Date]) as 'Rank'
Serait-ce un cas de regrouper les coûts séparément puis gauche de rejoindre les classements sur les données d'origine?
(je vais utiliser les pivots et les trancheuses dans Excel veulent donc avoir toutes les données sur une table/requête)
Je pense que quelqu'un d'autre a répondu quelque chose comme ça pour moi il y a un certain temps, voir si elle correspond à votre problème : https://stackoverflow.com/questions/19552316/oracle-order-by-different-columns-same-select-statement c'est Oracle mais je pense qu'il * peut * s'appliquer. –
pas tout à fait, j'essaye de classer par prix de nourriture, classer par catégorie, classer par catégorie, nom d'animal familier, date puis classer par dépenses de vétérinaire, classer par catégorie, classer par catégorie, nom d'animal familier, date ... etc. Je vais modifier ma question – VS1SQL
Je suis confus sur la question. Demandez-vous comment obtenir les rangs ou est-ce l'ordre réel des résultats finaux qui pose problème? – SQLChao