У нас есть данные, отсортированные по формату ниже. Первый столбец - это наша системная нумерация, второй столбец - это внутренняя системная нумерация, а третий столбец означает, что строки со значением ParentCol фактически ниже совпадающей строки Col1. (Таким образом, пункт 20 состоит из двух дополнительных частей: пункт 30 и пункт 50).
Col1 Col2 ParentCol
10 100 NULL
20 200 NULL
30 201 20
40 300 NULL
50 202 20
10 400 NULL
...
Это лишь небольшой пример - иногда на заказ может быть несколько сотен строк. Приложение плохо обрабатывает эту ситуацию с точки зрения просмотра данных в пользовательском интерфейсе. В идеале, я хотел бы, чтобы содержимое сортировалось следующим образом, с нашим ID-номером (Col1), являющимся основной сортировкой, но с учетом того, что внутренний ID-номер (Col2) должен следовать сразу же, когда значение ParentCol соответствует нашему ID:
Col1 Col2 ParentCol
10 100 NULL
10 400 NULL
20 200 NULL
30 201 20
50 202 20
40 300 NULL
Используя T-SQL, как мне написать запрос, который возвращает данные по мере необходимости? Из-за различных схем нумерации и возможных допустимых повторяющихся значений в нашей схеме нумерации, Col1 (но не внутренний столбец, Col2), я не смог выяснить это.
Спасибо,
Scott