[英]SQL Case Statement to Determine Filter
我在這里有這個問題。 我正在嘗試使用一個case語句來確定要使用的過濾器。 可以將其用於單個值,但不能使用Select語句結果。
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語句中獲取多個值。
謝謝。
也許像:
DECLARE @SingleValue INT = 0
SELECT
t1.Field1
, t1.Field2
, t1.Field3
FROM
tblTable1 t1
INNER JOIN tblTable2 t2 ON t1.Field1 = t2.Field
WHERE
(
( @SingleValue <> 0 )
or
( t1.Field2 IN ( SELECT Field1 FROM tblTable3) )
)
and
(
( @SingleValue = 0 )
or
( t2.Field2 = @SingleValue )
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.