簡體   English   中英

SQL Server存儲過程,在CASE子句內的Else語句中返回多個值

[英]SQL Server stored procedures, returning multiple value in Else statement inside CASE clause

我想在where子句中使用CASE和IN子句

  • 當用戶狀態= 1時,CASE應該返回1
  • 當用戶狀態= 2時,CASE應該返回2
  • 當用戶狀態= 3時,CASE應該返回3
  • 當User.Status = NULL時,它將顯示狀態為1、2和3的所有用戶

但是下面的查詢拋出語法錯誤。

查詢:

SELECT *
FROM User
where isInternalUser = 0 and DeleteMark <> 1 and
User.Status IN 
(
   CASE @UserStatus          // case for UserStatus
       WHEN 0 THEN 0
       WHEN 1 THEN 1
       WHEN 2 THEN 2
       ELSE (0,1,2)           
    END                      
)

誰能幫我一個忙..

謝謝,Aneesh

嘗試不使用CASE語句,但檢查@UserStatus IS NULL是否@UserStatus IS NULL

SELECT *
FROM User
WHERE isInternalUser = 0 AND DeleteMark <> 1 AND (
    (@UserStatus IS NOT NULL AND Status = @UserStatus)
    OR (@UserStatus IS NULL AND Status IN (0, 1, 2))
)
User.Status IN 
(
    SELECT s FROM (
        SELECT 1 s union SELECT 2 s union SELECT 3 s
    ) a
    WHERE @UserStatus is null or @UserStatus = s
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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