2016-04-04 2 views
0

мне нужно номер строки 1,2,3,4,5, как новый столбец в скриншоте ниже ..Добавить номер строки в качестве нового столбца в SQL Server

enter image description here

Запрос:

Select 
    ROW_NUMBER() OVER (ORDER BY vgid) AS RowNumber, 
    * 
from 
    T_EMS_VGDM_RULEMST 
where 
    VGID in (156, 157, 158, 159, 165) 
order by 
    CASE 
     WHEN VGID = 165 then 1  
     WHEN VGID = 158 then 2 
     WHEN VGID = 159 then 3 
     WHEN VGID = 157 then 4 
     WHEN VGID = 156 then 5 
    END 

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

+0

У меня есть вопрос с добавлением ROW_Number, но результат неправильный –

+0

aah. да, он работает с desc ... спасибо –

+0

'(ORDER BY vgid DESC)' пробовал? –

ответ

2

Разве это не просто:

Select 
    ROW_NUMBER() OVER (ORDER BY CASE 
            WHEN VGID = 165 then 1  
            WHEN VGID = 158 then 2 
            WHEN VGID = 159 then 3 
            WHEN VGID = 157 then 4 
            WHEN VGID = 156 then 5 
           END) AS RowNumber 
    , * 
    from T_EMS_VGDM_RULEMST 
    where VGID in (156,157,158,159,165) 
    ORDER BY CASE 
    WHEN VGID = 165 then 1  
    WHEN VGID = 158 then 2 
    WHEN VGID = 159 then 3 
    WHEN VGID = 157 then 4 
    WHEN VGID = 156 then 5 
    END 
+0

Спасибо, что работает. также мы можем избежать порядка, когда условие. –

+0

Порядок не является условием. По моему опыту, когда вы создаете номер строки, результат следует за порядком, но без заказа нет гарантии – HoneyBadger

+0

Да ... правильно ... спасибо –

1
Select 

ROW_NUMBER() OVER (ORDER BY vgid desc) AS RowNumber, 
* from T_EMS_VGDM_RULEMST where VGID in (156,157,158,159,165) 
ORDER BY CASE 
WHEN VGID = 165 then 1  
WHEN VGID = 158 then 2 
WHEN VGID = 159 then 3 
WHEN VGID = 157 then 4 
WHEN VGID = 156 then 5 
END 
Смежные вопросы