2013-02-21 143 views
0

我的存儲過程出現問題。在where語句中使用子查詢

總體思路是能夠選擇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)) 

這是一個例子。我選擇校園ID爲1,我選擇了大學ID爲1.查詢將返回這兩個參數的結果。

當我選擇校園ID爲1並且大學ID爲0時,我得到「子查詢返回的值超過1,當子查詢跟隨=,!=,<,< =,> > =或者當子查詢用作表達式時。「

當我做第二次輸入時,我想要系統中每個大學ID的所有結果。

關於如何使這項工作的任何想法?

謝謝!

回答

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 
) 
+0

這有助於我感謝你! – gmalenko 2013-02-21 21:43:13

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 
      ) 
    ) 
+0

sgeddes的回答是好。 – Lighthart 2013-02-21 21:36:52

+0

好的,謝謝! – gmalenko 2013-02-21 21:43:35