我有一个标量函数,它被写了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个学生(固定的value=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还有人能想到更好的解决方案吗?谢谢,
发布于 2013-03-01 22:35:16
最明显的方法是有一个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)https://stackoverflow.com/questions/15159987
复制相似问题