I have the following table in SQL Server 2008:
CREATE TABLE tbl (ID INT, dtIn DATETIME2, dtOut DATETIME2, Type INT)
INSERT tbl VALUES
(1, \'05:00\', \'6:00\', 1
It doesn't make sense to ORDER by a column that is not included in the list of DISTINCT items.
Let's use a simple scenario. First, a table FruitPerson
:
Fruit PersonName
----- ------
Apple Joe
Apple Mary
Peach Karen
Peach Lance
Here's the query equivalent to what you're trying to do:
SELECT DISTINCT Fruit
FROM FruitPerson
ORDER BY PersonName;
The result of this query without the ORDER BY
is this:
Fruit
-----
Apple
Peach
But now, the question is: how should the engine order these two values "Apple" and "Peach" by PersonName
? Which PersonNames? There are two people per fruit! Which name(s), exactly, should it use to decide whether Apple
or Peach
comes first?
Instead, rewrite your query as an aggregate:
SELECT Fruit, MinName = Min(PersonName) -- which name to order on
FROM FruitPerson
GROUP BY Fruit -- here's how you get your distinctness
ORDER BY MinName;