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