Je suis confronté à un problème très étrange que je n'ai pas encore trouvé d'explication. Avec SQL Server 2008 et en utilisant le GROUP BY il commande mes colonnes sans ORDER BY spécifié. Voici un script qui illustre la situation.Pourquoi SQL Server 2008 commande-t-il lorsque vous utilisez un GROUP BY et qu'aucune commande n'a été spécifiée?
CREATE TABLE #Values (FieldValue varchar(50))
;WITH FieldValues AS
(
SELECT '4' FieldValue UNION ALL
SELECT '3' FieldValue UNION ALL
SELECT '2' FieldValue UNION ALL
SELECT '1' FieldValue
)
INSERT INTO #Values (FieldValue)
SELECT
FieldValue
FROM FieldValues
-- First SELECT demonstrating they are ordered DESCENDING
SELECT
FieldValue
FROM #Values
-- Second SELECT demonstrating they are ordered ASCENDING
SELECT
FieldValue
FROM #Values
GROUP BY
FieldValue
DROP TABLE #Values
Le premier SELECT retournera
4
3
2
1
Le second SELECT retournera
1
2
3
4
Selon le MSDN Documentation il est écrit: "La clause GROUP BY ne commande pas le jeu de résultats "
Les documents MSDN ont l'air d'être mal formulés. Il * peut * ordonner le jeu de résultats, mais il vaut mieux ne pas faire de * suppositions * à propos de cette commande. Cela pourrait changer dans une future version. Ou, comme indiqué dans les réponses, il pourrait même changer si vous mettez plus de données dans votre tableau. –