0

我有一个标量函数,它被写了 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

有没有人能想到的更好的解决方案?谢谢,

4

1 回答 1

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)
于 2013-03-01T14:35:15.777 回答