Запрос SQL для сортировки данных только по одному столбцу, но не для изменения других столбцов - PullRequest
1 голос
/ 17 июня 2011

Я хочу, чтобы в запросе SQL отображались следующие данные

ID Name
1  AAA
2  BBB
3  CCC
4  DDD

в следующем виде:

ID Name
4  AAA
3  BBB
2  CCC
1  DDD

без изменения других столбцов.

Пожалуйста, предложите?

Спасибо

Ответы [ 3 ]

3 голосов
/ 17 июня 2011

Вы можете использовать row_number для нумерации таблицы в двух направлениях и объединить их вместе:

declare @t table (id int, name varchar(4))
insert @t values (1, 'AAA'), (2, 'BBB'), (3, 'CCC'), (4, 'DDD')

; with  numbered as
        (
        select  row_number() over (order by id) as rn1
        ,       row_number() over (order by id desc) as rn2
        ,       *
        from    @t
        )
select  t2.id
,       t1.name
from    numbered t1
join    numbered t2
on      t1.rn1 = t2.rn2

Это печатает:

id  name
4   AAA
3   BBB
2   CCC
1   DDD
1 голос
/ 17 июня 2011

Я собираюсь что-то вроде этого:

SELECT t2.ID, t1.NAME
FROM
    (SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) AS rownumber,
           Name
    FROM MyTable) as t1
    INNER JOIN
        (SELECT ROW_NUMBER() OVER(ORDER BY ID ASC) AS rownumber,
                ID
         FROM MyTable) as t2
ON t1.rownumber = t2.rownumber

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

0 голосов
/ 17 июня 2011

Я бы использовал подвыбор с предложением order by для столбца ID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...