Есть ли способ сделать столбцы вычисляемых иметь 2 параметра в качестве диапазона? - PullRequest
0 голосов
/ 25 мая 2019

Я пытаюсь создать процедуру, в которой, объявив переменные инициализированными и создав вычисляемый столбец, среднее значение имеет переменные @ efinal1 и @ efinal2 в качестве диапазонов

create proc sppromediorango

@efinal1 int=0,--min value
@efinal2 int=10--max value
as
begin
--here i make a computed column for getting the average score 
select ([ScoreEParcial]*0.4+[ScoreEFinal]*0.6)as averagescore
from [dbo].[tbAlumnos] a inner join [dbo].[tbScore] c 
on (a.aluID=c.ScoreAluID)
--here i´m looking for a correct method
where  averagescore between @efinal1 and @efinal2

end
go

Я ожидаювывод с @ efinal1 и @ efinal2 в качестве диапазона

1 Ответ

1 голос
/ 26 мая 2019

Вы не можете использовать псевдонимы из предложения select в предложении where.
Вам нужно либо использовать производную таблицу, либо общее табличное выражение. (единственное отличие в этом случае - читаемость):

create proc sppromediorango

    @efinal1 int=0,--min value
    @efinal2 int=10--max value
as
begin

    select averagescore
    from
    (
        select ([ScoreEParcial]*0.4+[ScoreEFinal]*0.6)as averagescore
        from [dbo].[tbAlumnos] a 
        inner join [dbo].[tbScore] c 
        on (a.aluID=c.ScoreAluID)
    ) As derived
    where  averagescore between @efinal1 and @efinal2

end
go
...