我在這裏遇到此問題。我正在嘗試使用case語句來確定使用哪個過濾器。將它用於單個值是可以的,但不能使用Select Statement結果。確定篩選器的SQL病例聲明
DECLARE @SingleValue INT = 0 SELECT t1.Field1 , t1.Field2 , t1.Field3 FROM tblTable1 t1 INNER JOIN tblTable2 t2 ON t1.Field1 = t2.Field WHERE t1.Field2 IN (SELECT CASE WHEN @SingleValue = 0 THEN (SELECT Field1 FROM tblTable3) ELSE t1.Field2 END) AND t2.Field2 = (CASE WHEN @SingleValue = 0 THEN t2.Field2 ELSE @SingleValue END)
一旦@singleValue被設定爲值「123」則當我將值設置爲工作正常,在時刻「0」(零),那麼它返回一個錯誤「子查詢返回多個1值。當子查詢遵循=,!=,<,< =,>,> =或子查詢用作表達式時,這是不允許的。
該問題從case語句中的'(SELECT Field1 FROM tblTable3)'開始。我怎樣才能解決它在case語句中獲取多個值。
謝謝。
使用和/或代替如果情況... – jarlh
你有沒有考慮增加一個'LIMIT'? – SZenC
「在案例陳述中獲得多個值」 - 你不知道。一個'CASE' *表達式*,與SQL中的其他表達式共同使用,旨在產生一個*單個*值(針對它的每一行進行評估) –