我有一个标量函数,写入3次并进行微小更改。我计划将这三个功能合并为一个功能。
ForStudent- A
Declare @CN INT
SELECT @cn=COUNT(*)
FROM XYZ A
WHERE A.subjects in ('1223','2234','3345')
IF @cnt>3
SELECT @Pass=1
ELSE
SELECT @Pass=0
RETURN @Pass
END
//Similarly ForStudent - B
Declare @CN INT
SELECT @cn=COUNT(*)
FROM XYZ A
WHERE A.subjects in ('1214','0987','0098')
IF @cnt>5
SELECT @Pass=1
ELSE
SELECT @Pass=0
RETURN @Pass
END
学生3也一样。
例如,只有3名学生(固定值= 3),他们有固定的项目。我如何将这三个功能合并为一个?
I am presently doing with
IF @Student= 'A'
BEGIN
Call the code for A
END
IF @Student = 'B'
BEGIN
Call the code for B
END
IF @Student = 'C'
Call the code for C
END
有没有人能想到更好的解决方案? 谢谢,
答案 0 :(得分:0)
显而易见的方法是拥有一个StudentSubjects
表(可能有一些表明它用于此功能,或使用现有的这样的表,其中3个特殊主题可以用某种方式标记)
CREATE TABLE StudentSubjects (
StudentID char(1) not null,
Subject char(4) not null
)
(每个学生将有3行,每个学科分开存储)
然后你的功能就是:
SELECT @cn=COUNT(*)
FROM XYZ A
WHERE A.subjects in (select Subject from StudentSubjects where StudentID=@StudentID)