#sql #sql-server
#sql #sql-server
Вопрос:
Я выбираю 2 столбца и создаю дополнительный столбец RPM
на основе категории в столбце Description
. Затем я хочу создать новый столбец на основе RPM
called MaxRPM
. Если я удалю 3-ю строку, команда работает нормально, но не создается MaxRPM
.
Я получаю эту ошибку: State 1, Line 1, Invalid column name 'RPM'
.
Команда SQL Server:
select [ID], [Date],
max(case when Description = 'RPM' then Value end) as RPM,
max(RPM) over (partition by [ID] order by [Date] ROWS BETWEEN 5 PRECEDING AND current row) as MaxRPM
from [DB].[Table]
where [Date] > '2019-01-01'
group by [ID], [Date]
Почему я получаю эту ошибку, когда я только что создал новый столбец во второй строке? Любая помощь будет оценена.
Ответ №1:
Вы можете попробовать следующий способ — поскольку вы не можете использовать псевдоним для создания другого столбца
with cte as
(
select [ID], [Date],
max(case when Description = 'RPM' then Value end) as RPM
from [DB].[Table]
where [Date] > '2019-01-01'
group by [ID], [Date]
)
select *,max(RPM) over (partition by [ID] order by [Date] ROWS BETWEEN 5 PRECEDING AND current row) as MaxRPM
from cte
Ответ №2:
Я думаю, что 3-ю строку необходимо удалить в команде Fami, иначе она выдает ту же ошибку.
with cte as
(
select [ID], [Date],
max(case when Description = 'RPM' then Value end) as RPM
from [DB].[Table]
where [Date] > '2019-01-01'
group by [ID], [Date]
)
select *,max(RPM) over (partition by [ID] order by [Date] ROWS BETWEEN 5 PRECEDING AND current row) as MaxRPM
from cte