2013-11-20 5 views
0

У меня проблема с моим запросом.Сортировать по: SQL Server 2008

Мне нужно отсортировать мои записи на основе столбцов Дата создания и Позиции изображения.

Где, как у меня есть таблица, как показано ниже

«--------------------------------- ------------------------
Id | Тип изображения | Создано Dt | Изображение |
'----------------------------------------------- ----------
1 * |Оригинальное изображение |2013-11-20 17: 27: 06.380 | |
2 * |Оригинальное изображение |2013-11-20 17: 27: 07.380 | |
3 * | * Blank_Image * |2013-11-20 17: 27: 08.380 | |
4 * |Оригинальное изображение |2013-11-20 17: 27: 09.380 | |
'--------------------------------------------- ------------

Теперь, если я использую

Сортировать по [Создано дт], [Image Position] Тогда я получаю правильное

Теперь я хочу изменить положение изображения imge id 4 в положение изображения 1 и идентификатор изображения 1 в положение изображения 3

'--------------------------------------------- ------------
Id | Тип изображения | Создано Dt | Изображение |
'----------------------------------------------- ----------
1 * |Оригинальное изображение |2013-11-20 17:27:06.380 | |
2 * |Оригинальное изображение |2013-11-20 17: 27: 07.380 | |
3 * | * Blank_Image * |2013-11-20 17: 27: 08.380 | |
4 * |Оригинальное изображение |2013-11-20 17: 27: 09.380 | |
'--------------------------------------------- ------------

Сейчас мой ожидаемый результат должен быть

«------------------- --------------------------------------
Id | Тип изображения | Создано Dt | Изображение |
'----------------------------------------------- ----------
4 * |Оригинальное изображение |2013-11-20 17: 27: 09.380 | |
2 * |Оригинальное изображение |2013-11-20 17: 27: 07.380 | |
3 * | * Blank_Image * |2013-11-20 17: 27: 08.380 | |
1 * |Оригинальное изображение |2013-11-20 17:27:06.380 | |
'--------------------------------------------- ------------

Но здесь, в этом случае, если я использую

Сортировать по [Created сИ], [Позиция изображения] он дает мне

'----------------------------------------- ----------------
ID | Тип изображения | Создано Dt | Изображение |
'----------------------------------------------- ----------
1 * |Оригинальное изображение |2013-11-20 17: 27: 06.380 | |
2 * |Оригинальное изображение |2013-11-20 17: 27: 07.380 | |
3 * | * Blank_Image * |2013-11-20 17: 27: 08.380 | |
4 * |Оригинальное изображение |2013-11-20 17: 27: 09.380 | |
'--------------------------------------------- ------------

Я не могу объяснить это больше, чем это .. Если кто-то может понять это, пожалуйста, помогите мне.

Заранее спасибо.

+0

Что вы на самом деле хотите сделать с этим. Желаемые данные не сортируются по дате или по положению изображения? – Mithrandir

+0

Я хочу, чтобы все исходные изображения сортировались по позиции изображения, но в то же время я хочу, чтобы все пустые изображения были отсортированы по созданному dt. Это будет возможно? Извините, это немного сложно. –

+0

Я не думаю, что вы можете сделать, просто заказывая по дате и положению. – Mithrandir

ответ

3

Поскольку вы сначала сортируете по CreateDate, а затем ImagePosition - это ожидаемое поведение. Второе поле сортировки (ImagePosition) будет использоваться только в качестве тай-брейкера, где будут найдены несколько строк для одного и того же CreatedDate. В вашем случае все созданные функции CreateDate отличаются друг от друга, поэтому сортировка ImagePosition никогда не используется (или не требуется).

Попробуйте изменить порядок сортировки, чтобы получить то, что вы хотите:

Order by [Image Position], [Created dt] 
+0

Я хочу все пустые страницы без сортировки и оставшихся исходных страниц с сортировкой. Если пустая страница имеет позицию как 3, даже после сортировки позиции должно быть 3. –

+0

Чтобы пояснить, причина, по которой запрос работал для вас изначально, не из-за ImagePosition (поскольку это игнорировалось), а скорее из-за того, что CreatedDt произошел с происходят в том порядке, который вы ожидали. Единственный критерий, который здесь используется, - CreateDt - если вы хотите добавить другие критерии, вы можете это сделать - но это не оставит ни одну из ваших строк несортированными, и вы никогда не сможете сделать это, используя инструкцию ORDER BY. Вы можете смоделировать то, что хотите (несортированные строки из отсортированных строк), если у вас есть жесткая логика для ввода на место, но к тому времени вы будете выглядеть довольно грязно. – PinnyM

0

Если я правильно понимаю, что вам нужно:

order by [Created dt] DESC, [Image Position] 
+0

Нет, это не проблема вообще - это также все равно даст нежелательный результат. – PinnyM

+0

Да, вы правы, я не отказался от этого правильно. Я только что увидел, что строка, которая имеет «17: 27: 07.380», выше «17: 27: 07.380». Мой ответ неправильный – vkamayiannis

+0

Я хочу все пустые страницы без сортировки и оставшихся исходных страниц с сортировкой. Если пустая страница имеет позицию как 3, даже после сортировки позиция должна быть 3. –

Смежные вопросы