Порядок SQL в пользовательской последовательности

#sql #sql-server #sql-order-by

#sql #sql-сервер #sql-order-by

Вопрос:

У меня есть данные в таком порядке

 Id   Value
--   ----
1    a
1    b
1    c
2    a
2    c
3    b
4    c
4    b
4    a
  

Я хочу отсортировать данные в этом порядке

 Id   Value
--   ----
1    a
2    a
3    b
4    c
1    b
2    c
4    b
1    c
4    a
  

Комментарии:

1. и какова логика, стоящая за такой сортировкой?

2. Не просто публикуйте ожидаемый порядок и ожидайте, что люди выведут логику. Мы не берем плату за слово здесь, поэтому добавьте еще много из них к вашему вопросу.

3. Отлично, спасибо, что рассказали нам. Удачи! Не забудьте опубликовать ответ, когда будете разбираться, как это сделать, и объясните логику, стоящую за этим.

4. Пожалуйста, опубликуйте свои попытки того, что вы пытаетесь сделать.

5. На самом деле в таблице есть несколько записей с одинаковыми идентификаторами. Но когда мне нужно их извлечь и отобразить на странице, все данные уникальных идентификаторов должны отображаться в первом пакете и так далее.

Ответ №1:

Кажется, вы хотите чередовать числа. Для этой цели вы можете использовать row_number() :

 order by row_number() over (partition by id order by value),
         id
  

Комментарии:

1. Это действительно создает что-то очень похожее на то, что запрашивает OP, кроме a,c значений, сопряженных с 4 s .