1

where 句の中で CASE 句と IN 句を使用したい

  • ユーザー ステータス = 1 の場合、CASE は 1 を返す必要があります。
  • User Status = 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                      
)

誰でも私を助けてくれますか..

ありがとう、アニーシュ

4

2 に答える 2

1

ステートメントなしで試してください。ただし、次のCASEことを確認してください@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))
)
于 2012-06-13T07:14:27.417 に答える
0
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
)
于 2012-06-13T06:51:00.860 に答える