【发布时间】:2017-11-23 06:52:59
【问题描述】:
我在下面的 where 语句中创建了一个使用动态变量的视图。
DECLARE
@wkFileYear SMALLINT = (select fs.FileYear from dbo.FileSemesters fs
where fs.systemcurrentflag = 1),
@wkFileSemester SMALLINT = (select fs.FileSemester from dbo.FileSemesters fs where fs.systemcurrentflag = 1)
Select R.FileType, R.FileYear, R.FileSemester, R.ID, R.ClassCode, R1.Raw
from
(
SELECT SC.FileType, SC.FileYear, SC.FileSemester, SC.ID, SC.ClassCode
FROM StudentClasses AS SC
) as R
LEFT JOIN
(
SELECT SAR.Filetype,SAR.FileYear, SAR.FileSemester, SAR.ID, SAR.ClassCode, SAR.Result as Raw
FROM
StudentAssessmentResults AS SAR
) as R1
on r.FileYear = R1.Fileyear
and R.FileSemester = R1.FileSemester
and R.FileType = R1.FileType
and R.ClassCode = R1. ClassCode
and R.ID = R1.ID
where
R.FileType = 'A'
AND (R.FileYear = @wkFileYear)
AND (R.FileSemester =
case
when (left(R.classcode,2) = '12' or left(R.classcode,2) = '11') and @wkFileSemester = 4
then 3
else @wkFileSemester
end
)
我想将此作为视图保存在数据库中,但您不能在视图中声明变量。我查看了有关使用 CTE 或表值函数的所有信息,但完全不确定语法。我尝试使用各种来源的示例创建 CTE 和表值函数,但没有成功。
希望有人能解释我如何仍然可以使用变量,但允许我将其保存为数据库中的视图。
【问题讨论】:
标签: tsql variables view declare