SQL Server порядок в каждом конкретном случае

Я хочу создать четвертый столбец с этим query:

select * from (select ID, column0, column1, column2, column3 = Case when 
column2 = '' then column1 else column2 end, row_number() over(partition by 
column0 order by [column3]) as column4 from myTable) ti 

Но эта ошибка появляется:

Invalid column name 'column3'.

Я хочу этот результат: (красный столбец):

пример

2 ответа

Решение

Вам нужно использовать order by вне подзапроса, как показано ниже:

Select *, row_number() over(partition by 
 column3 order by [Id]) as column4 
 from (select ID, column0, column1, column2, column3 = Case when 
      column2 = '' then column1 else column2 end 
        from myTable) ti 

Для вашего 4-го столбца в изображении вам нужно разделить по столбцу порядок по идентификатору. Если вы сделаете Partition by column0, то вы получите все 1

Так будет работать:

select *, row_number() over(partition by 
column0 order by [column3]) as column4 from 
(select ID, column0, column1, column2, column3 = Case when 
column2 = '' then column1 else column2 end from myTable) ti 
Другие вопросы по тегам