我的存储过程有问题。
一般的想法是能够选择4个参数(可以选择或不选择)并返回正确的结果。因为我真的不能使用两个参数(校园ID是必填的),所以我没有费心去做其他的。
问题出在我的where子句中
WHERE ac.AC_Campus_ID = @CampusID AND
(
ac.AC_College_ID IN (CASE @CollegeID
WHEN 0 THEN (select distinct AC_College_ID from AC_Academic_Choice)
ELSE @CollegeID
END))
这是一个例子。我选择一个校园id为1,我选择一个学院id为1。查询将返回这两个参数的结果。
当我选择一个校园id为1和一个学院id为0时。我得到“子查询返回多个值。当子查询跟在=,!=,<,<=,>,>=之后,或子查询被用作表达式时,这是不允许的。”
当我做第二次输入时,我想要系统中每个大学id的所有结果。
你有什么办法让它工作吗?
谢谢!
发布于 2013-02-22 05:33:00
以下是重写它以获得您想要的结果的一种方法:
...
WHERE ac.AC_College_ID IN (
SELECT DISTINCT AC_College_ID
FROM AC_Academic_Choice
WHERE AC_College_ID =
CASE @CollegeID
WHEN 0
THEN AC_College_ID
ELSE @CollegeID
END
)
发布于 2013-02-22 05:32:28
尝试:
WHERE ac.AC_Campus_ID = @CampusID AND
(SELECT 1 WHERE ac.AC_College_ID IN
(CASE @CollegeID
WHEN 0 THEN (select distinct AC_College_ID from AC_Academic_Choice)
ELSE @CollegeID
END
)
)
https://stackoverflow.com/questions/15012510
复制相似问题