有什么方法可以使计算列具有 2 个参数作为范围?

Is there any method to make computeds columns have 2 parameters as range?

我正在尝试创建一个过程,其中声明变量已初始化并创建计算列,平均值将变量@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 作为范围

您不能在 where 子句中使用来自 select 子句的别名。
您需要使用派生的 table 或通用的 table 表达式。 (在这种情况下唯一的区别是可读性):

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