有什么方法可以使计算列具有 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
我正在尝试创建一个过程,其中声明变量已初始化并创建计算列,平均值将变量@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