Причиной, по которой ваш первый запрос дал заказ, отличный от того, что вы хотели, является ...
- Вы используете поле «GeneratedDate» для создания вашей строки
- Затем вы создаете псевдоним этого результирующего поля для «GeneratedDate»
- Затем вы заказываете по «GeneratedDate» без указания таблицы
- Таким образом, поле результата используется для заказа
Простое исправление упоминается в других ответах ...
ORDER BY ProviderProcessGeneratedDate.GenerateDate
При указании таблицы нет путаницы, и вы получите желаемый результат.
[В сторону]
Как правило, я всегда добавляю свои поля к [table]. чтобы избежать любой двусмысленности. Тем более, что я часто возвращаюсь позже и добавляю в объединение, заставляя нед для имени таблицы.
Кроме того, я называю имена таблиц. Не для таких вещей, как [а], а для чего-то значимого, например, [Даты]. Это сокращает запрос, но также позволяет мне изменять используемую таблицу без необходимости изменения других ссылок на нее в других частях запроса.
[конец в сторону]
EDIT:
Я оставил свой предыдущий ответ, унизив себя. Я действительно должен получить домашний сервер sql, чтобы я мог попробовать свой ответ, прежде чем опубликовать свой ответ ... *** Извинения *
Как говорится в комментарии, вы не можете указывать что-либо в ORDER BY, если это не указано в SELECT DISTINCT.
Поэтому я бы вместо этого попробовал GROUP BY ...
SELECT
Convert(DATETIME,CONVERT(Varchar(10), GeneratedDate, 101))
FROM
ProviderProcessGeneratedDate
GROUP BY
GeneratedDate
ORDER BY
GeneratedDate
Предполагается, что значение GeneratedDate равно 1: 1 с вашей формулой CONVERT. Если, например, у вас есть TIME в ваших полях GeneratedDate, а ваш формат даты в CONVERT - нет; вам нужно вырезать время из поля GeneratedDate ...
SELECT
Convert(DATETIME,CONVERT(Varchar(10), DATEADD(DAY, DATEDIFF(DAY, 0, GeneratedDate), 0), 101))
FROM
ProviderProcessGeneratedDate
GROUP BY
DATEADD(DAY, DATEDIFF(DAY, 0, GeneratedDate), 0)
ORDER BY
DATEADD(DAY, DATEDIFF(DAY, 0, GeneratedDate), 0)