J'ai un rapport SQL piloté par une requête qui le trie dans l'ordre croissant de certaines valeurs numériques. Mais l'utilisateur souhaite que deux rangées de données particulières, qui apparaissent à différentes positions ordinales dans les résultats de la requête, soient juxtaposées. Existe-t-il un moyen de le faire, soit par l'intermédiaire de l'instruction SQL du rapport, soit du fichier .rdl lui-même?Contrôle fin sur ordre de tri SQL
Répondre
Il suffit d'ajouter une autre expression calculée comme premier ordre par l'expression, ce qui met ces deux valeurs devant tous les autres ...
Select [Other stuff]
From Table
Order By Case colName
When first_val then 0
When second_val then 0
else 1 End,
colName
ou, EDIT (pour inclure @ suggestion de Astander)
Select [Other stuff]
From Table
Order By Case
When colName In (first_Val, second_Val)
Then 0 else 1 End,
colName
et une autre édition, de mettre second_val immédiatement après first_Val ...
Select [Other stuff]
From Table
Order By Case
When colName < first_Val And colName <> secondVal Then 0
When colName = first_Val Then 1
When colName = secondVal Then 2
Else 3 End,
colName
On dirait que vous vous demandez ceci:
select * from table where col1 = first_val or col1 = second_val;
où first_val et second_val sont les valeurs pour les lignes que l'utilisateur veut renvoyé.
Si ce n'est pas ce que vous cherchez, veuillez clarifier votre question.
également Les CURSEURS sont un bon outil pour un contrôle précis. J'utilise ça, mais je vais voir si on peut enlever le code itératif en utilisant la suggestion ORDER BY CASE.
"CURSOR" est le 'Voldemort' des développeurs de bases de données .... –
- 1. Ordre de tri dans SQL Server
- 2. sql tri numérique puis par ordre alphabétique
- 3. Ordre de tri de la table aspnet_Users
- 4. Ordre de tri de la liste déroulante ASP.NET/SQL
- 5. Wordpress - ordre de tri personnalisé
- 6. key = operator.attrgetter Ordre de tri?
- 7. tableau Difficile ordre de tri
- 8. Mysql Ordre de tri très étrange
- 9. CTE SQL récursif et ordre de tri personnalisé
- 10. Ordre de tri SQL par l'ordre spécifié dans la requête
- 11. LINQ et un ordre de tri naturel
- 12. Ordre de tri personnalisé dans une table
- 13. Tri de données par ordre alphabétique
- 14. CakePHP, bon ordre/comportement de tri?
- 15. Boucle Java For-Each: Ordre de tri
- 16. Liste de tri par ordre d'index donné
- 17. tri de données numériques par ordre alphabétique
- 18. mvccontrib grille Ordre de tri par défaut
- 19. Ordre de tri "orderby" conditionnel dans LINQ
- 20. tableau de tri dans CEEPC ordre
- 21. Tri des données numériques par ordre alphabétique
- 22. Délai d'expiration du contrôle ReportViewer sur le tri
- 23. SQL Ordre conditionnel par
- 24. pl/sql bubble tri
- 25. Tri sur GUID SQL Server 2008
- 26. php tri ordre naturel de sélectionner des lignes de MySQL
- 27. Drupal 6: date précise de tri par ordre chronologique
- 28. requête Linq pour afficher un ordre de tri approprié
- 29. Python: tri par liste avec plusieurs attributs et ordre mélangé
- 30. Delphi - Comment contrôle Z Ordre de TOpenDialog
Vous pouvez raccourcir cela en utilisant ** CAS quand colName IN (first_val, second_val) puis 0 ** –
Je ne savais pas que vous pourriez utiliser CASE dans le contexte de ORDER BY. – JonathanWolfson
@Jonathan, Bien sûr, vous pouvez utiliser Case à peu près partout. @astander, bon ... je n'étais pas sûr que vous pouviez utiliser la syntaxe In (List) dans un Case ... –