[英]Case Issue in SQL statement with IN statement
我遵循簡單的案例陳述
CASE WHEN @SPOID is not null THEN
(176)
ELSE
(SELECT designationID from setupdesignations where reportto = 99)
END
當該語句的else子句執行時,它給出了以下錯誤
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
我在IN
子句中使用此語句我期望在其他情況下返回多個結果,但它給了我上面的錯誤。 如果我刪除case語句並在查詢中執行else部分,那么我得到預期的結果
您不能將子選擇用作CASE匹配中的表達式,它需要單個值。 相反如何;
where
(@SPOID is not null and infield = 176)
or
(@SPOID is null and infield in (SELECT designationID from setupdesignations where reportto = 99))
雖然您使用的是IN
子句,但CASE
語句只允許一行作為return語句。
你必須想出另一種方法來做到這一點。
您可以嘗試使用動態查詢來實現最終目標。 以下鏈接可能指向正確的方向 - 查看最后一篇文章: http : //forums.devx.com/showthread.php?t = 150247
嘗試將您的in子句更改為:
... in
(SELECT designationID
from setupdesignations
where reportto = 99 and @SPOID is not null
UNION
SELECT 176 where @SPOID is null)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.