簡體   English   中英

帶有IN語句的SQL語句中的案例問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM