0

我的存储过程有问题。

总体思路是能够选择一个4个参数(可以选择也可以不选择)并返回正确的结果。因为我真的不能让它与 2 个参数一起工作(校园 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))

这是一个例子。我选择了 1 的校园 id 并选择了 1 的大学 id。查询将返回这 2 个参数的结果。

当我选择 1 的校园 id 和 0 的大学 id 时,我得到“子查询返回超过 1 个值。当子查询遵循 =、!=、<、<=、>、>= 或当子查询用作表达式。”

当我进行第二次输入时,我想要系统中每个大学 ID 的所有结果。

关于如何让它发挥作用的任何想法?

谢谢!

4

2 回答 2

3

这是重写它以获得所需结果的一种方法:

...
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-21T21:33:00.173 回答
0

尝试:

   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
            )
      )
于 2013-02-21T21:32:27.867 回答