J'ai deux colonnes dans la table datetime de notre fuseau horaire avec, en tenant compte de l'heure d'été, c drapeau de l'heure d'été. J'ai la commande par tous les jours (ordre par date-heure), et commande par pour changer l'heure de l'été à l'hiver (commande par le drapeau desc, datetime). par conséquent, je veux voir l'ordre de sélection par datetime mais dans le jour de l'ordre changeant de temps par le drapeau desc, datetime. puis-je faire une seule requête sans procédure stockée, curseurs, vue?sql problèmes avec le tri
Répondre
J'interprète votre exemple comme suit:
Trier par date (pas le temps) croissant.
La plupart du temps - temps asecending
10/31 (et im deviner un jour au printemps?) - drapeau desc, temps ascendng
ORDER BY DATE(datefield), (CASE DATEPART(dy, datefield) WHEN '10/31' THEN c DESC, TIME(datefield) ELSE TIME(datefield) END)
Où DATEPART (dy, X), est un tsql pour ce jour sans l'année. Si je me trompe, ou si vous voulez le rendre universel, vous pouvez simplement faire du CONCAT le MOIS et le JOUR entre autres choses.
Vous avez laissé de la place pour l'interprétation dans le cas du 'Most days' (puisque dans votre exemple, toutes les dates avec le flag sont strictement plus importantes que toutes celles sans). mais vous pouvez changer cela mais vous avez besoin
(fonctions TIME ne font aucune différence fonctionnelle puisque nous savons dates sont égales à chaque fois que cette question est importante de comparaison. Je les ai mis pour plus de clarté)
select * d'un me donne quelque chose comme ça :
2010-03-28 00:47:42 0
2010-03-28 01:27:42 0
2010-03-28 03:17:42 1
2010-03-28 05:20:42 1
2010-03-28 07:20:42 1
2010-10-31 00:35:20 1
2010-10-31 01:10:20 1
2010-10-31 02:04:20 0
2010-10-31 02:05:20 0
2010-10-31 02:07:20 0
2010-10-31 02:09:20 0
2010-10-31 02:10:20 1
2010-10-31 02:13:20 0
2010-10-31 02:18:20 0
2010-10-31 02:20:20 1
2010-10-31 02:40:20 1
2010-10-31 03:24:20 0
2010-12-01 11:08:19 0
je veux voir quelque chose comme ceci:
2010-03-28 00:47:42 0
2010-03-28 01:27:42 0
2010-03-28 03:17:42 1
2010-03-28 05:20:42 1
2010-03-28 07:20:42 1
2010-10-31 00:35:20 1
2010-10-31 01:10:20 1
2010-10-31 02:10:20 1
2010-10-31 02:20:20 1
2010-10-31 02:40:20 1
2010-10-31 02:04:20 0
2010-10-31 02:05:20 0
2010-10-31 02:07:20 0
2010-10-31 02:09:20 0
2010-10-31 02:13:20 0
2010-10-31 02:18:20 0
2010-10-31 03:24:20 0
2010-12-01 11:08:19 0
Et quelle est exactement la différence entre les deux listes ?? Ils me ressemblent beaucoup ...... –
désolé, je modifie quelques-uns – Xaver
Fondamentalement, vous avez besoin de normaliser le temps; la clause ORDER BY ci-dessous supprime l'heure associée à l'heure d'été. Si votre Colum dst est en fait un peu, vous devrez peut-être convertir en un tinyint (soit dans votre conception ou en ligne dans la clause ORDER BY pour faire ce travail.
USE tempdb
DECLARE @T TABLE (dt DATETIME, c tinyint)
INSERT INTO @t
VALUES ('2010-03-28 00:47:42', 0)
,('2010-03-28 01:27:42', 0)
,('2010-03-28 03:17:42', 1)
,('2010-03-28 05:20:42', 1)
,('2010-03-28 07:20:42', 1)
,('2010-10-31 00:35:20', 1)
,('2010-10-31 01:10:20', 1)
,('2010-10-31 02:04:20', 0)
,('2010-10-31 02:05:20', 0)
,('2010-10-31 02:07:20', 0)
,('2010-10-31 02:09:20', 0)
,('2010-10-31 02:10:20', 1)
,('2010-10-31 02:13:20', 0)
,('2010-10-31 02:18:20', 0)
,('2010-10-31 02:20:20', 1)
,('2010-10-31 02:40:20', 1)
,('2010-10-31 03:24:20', 0)
,('2010-12-01 11:08:19', 0)
SELECT Dt, c
FROM @t
ORDER BY DATEADD(HOUR, -c, Dt)
- 1. Problèmes avec le tri
- 2. Problèmes avec tri et de IComparable
- 3. Tri avec le serveur sql et le classement et unicode
- 4. Sql Paging/Tri - Méthode efficace avec tri dynamique?
- 5. Problèmes de tri de l'image
- 6. Tri table SQL
- 7. JTable renderer avec le tri
- 8. pl/sql bubble tri
- 9. SQL Recursive Menu Tri
- 10. problèmes avec TriScatteredInterp
- 11. J'ai des problèmes avec les déclencheurs sql
- 12. Problèmes avec le radgrid
- 13. problèmes avec le build.xml
- 14. Problèmes avec sp_addlinkedserver dans SQL Server 2000
- 15. J'ai des problèmes avec SQL COUNT
- 16. Script T-SQL - problèmes logiques avec chronologie
- 17. SQL: problèmes avec comme et non comme
- 18. Penser le sphinx, le tri complexe - comment puis-je combiner le tri étendu avec le tri expr?
- 19. LINQ To SQL Tri dynamique
- 20. SQL Instruction de tri nvarchar
- 21. Problèmes SQL Query existent
- 22. Tri par Javascript pour correspondre au tri SQL Server
- 23. comment ajouter la direction de tri avec linq pour sql?
- 24. SQL Syntaxe Problèmes
- 25. Besoin d'aide pour le tri complexe dans SQL
- 26. tri arbre avec autre colonne dans SQL Server 2008
- 27. Problèmes avec le plan interactif
- 28. Problèmes avec le dossier App_code
- 29. Problèmes avec le contrôle AJAX
- 30. Problèmes avec le code Prolog
en jour le ressort tout va normalement je travaille sur microsoft sql server qui n'ont pas de fonction date() aussi la syntaxe de cas dans 'order by' dans t-sql est difficile à comprendre pour moi. jours de changement stockés dans la base de données (il est juste dimanche dernier de novembre je ne peux pas penser que l'expression dans t-sql et je crée la table.) puis-je faire requête après quand? – Xaver