сортировать столбец с повторяющимися значениями по другому столбцу в sql - PullRequest
2 голосов
/ 14 июня 2019

У меня есть следующая таблица:

+------+--------+
| Type |Location|
+------+--------+
| 0003 |   US   |
| 0010 |   US   |
| 0007 |   CA   |
| 0013 |   MX   |
| 0003 |   EU   |
| 0007 |   MX   |
| 0219 |   CN   |
+------+--------+

Мне нужно отсортировать ее по «Местоположению», кроме случаев, когда в столбце «Тип» найден дубликат.Затем следующая строка должна быть дублирована (или больше дубликатов), прежде чем продолжить сортировку по «Местоположению».

Ожидаемый результат:

+------+--------+
| Type |Location|
+------+--------+
| 0007 |   CA   |
| 0007 |   MX   | <---- Exception (duplicate of 0007)
| 0219 |   CN   |
| 0003 |   EU   |
| 0003 |   US   | <---- Exception (duplicate of 0003)
| 0013 |   MX   |
| 0010 |   US   |
+------+--------+

Я пытался играть с cte и row_numberно я не мог нигде приблизиться.Я не уверен, что это был хороший подход, но я не могу придумать другого решения.

1 Ответ

5 голосов
/ 14 июня 2019

Вы можете делать что хотите с помощью оконной функции в order by:

select t.*
from t
order by (min(location) over (partition by type)),
         location
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...