SQL Server — не удалось создать дополнительный новый столбец на основе первого нового столбца

#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