首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标量函数-Merge

标量函数-Merge
EN

Stack Overflow用户
提问于 2013-03-01 22:23:16
回答 1查看 119关注 0票数 0

我有一个标量函数,它被写了3次,只做了一点小小的改动。我计划将这三个函数合并为一个函数。

代码语言:javascript
复制
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),他们有固定的科目。如何将这三个函数合并为一个函数?

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2013-03-01 22:35:16

最明显的方法是有一个StudentSubjects表(可能有一些指示它用于这个函数,或者使用一个现有的这样的表,其中可以以某种方式标记3个特殊的主题)

代码语言:javascript
复制
CREATE TABLE StudentSubjects (
    StudentID char(1) not null,
    Subject char(4) not null
)

(每个学生有3行,每个主题单独存储)

然后你的函数就会变成:

代码语言:javascript
复制
SELECT @cn=COUNT(*)
FROM XYZ A
WHERE A.subjects in (select Subject from StudentSubjects where StudentID=@StudentID)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15159987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档