2013-04-13 2 views
-1

Гол:
Чтобы получить заказ в правильном порядке.Показать колонку в заказе на заказ

Requested result in the table 

a = nvarchar 
n = int 
text = nvarchar 


a n text 
---------- 
a 3 sd 
a 2 df 
a 1 cv 
c 2 we 
c 1 qw 
b 5 zx 
b 4 hj 
b 3 cv 
b 2 fv 
b 1 av 
... 
... 
... 
... 
... 
... 
more rows to go 

Проблема:
Я не знаю, как сделать это с кодом SQL для извлечения столбца «п» в правильном порядке. Правильный порядок отображается в части цели.

a = nvarchar 
n = int 
text = nvarchar 


a n text 
---------- 
a 1 sd 
a 2 df 
a 3 cv 
c 1 we 
c 2 qw 
b 1 zx 
b 2 hj 
b 3 cv 
b 4 fv 
b 5 av 
... 
... 
... 
... 
... 
... 
more rows to go 
+0

Где желаемый порядок, в первом или во втором множества результатов? Первая - та, которая имеет «цель» выше. Кстати, вы что-нибудь пробовали? –

+0

Желаемый заказ в части цели или первом наборе результатов. Пожалуйста, сообщите, если вам нужно больше объяснений. –

+0

Итак, почему спускаемая «c-группа» спускается до 'b-group'? –

ответ

1

I: Вы хотите знать, как обновить таблицу, чтобы принять во внимание новый порядок столбцов n столбцов?

Вы: Да, это правильно. Изменение только столбца n и его хронологический порядок для данных. Желаемое значение начинается с самого высокого значения и доходит до значения «1». Его можно изменить или вы также можете добавить новый столбец.

Вы можете обновить n -column с ROW_NUMBER в CTE:

WITH cte AS 
(
    SELECT a, n, text, 
      rn = Row_number() 
       OVER( 
        partition BY a 
        ORDER BY n DESC) 
    FROM dbo.Table1) 
UPDATE cte 
SET n = rn; 

DEMO

0

Вы можете указать порядок так:

SELECT 
    a, n, txt 
FROM 
    TableName 
ORDER BY 
    a, 
    n DESC 

Но сортируют согласно a стоимости первой тоже.

+0

Пожалуйста, прочтите инструкцию. –

0
Select * from table order by a, n 
+0

Пожалуйста, прочитайте в инструкции –

+0

что такое «инструкция»? –

+0

wait, так что столбец n является динамическим столбцом, который вы хотели бы построить с номером, который хотите? или это реальный столбец, и вы хотите изменить значение внутри него? лучше прояснить свой вопрос, это так непонятно и смущает. Я думаю, код @Tim Schmelter будет работать –