Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

trying to get single column data with switch case statement

I am trying to get query the table based on role like this below but I am getting error like this

Incorrect syntax near '='.

I am not sure why I am getting this error

below is my query

CREATE procedure [dbo].[getName]            
    @AccountId int,    
    @role varchar(50),
    @Activated_By nvarchar(100)            
AS            
BEGIN           

    SELECT   Name 
    FROM     pass_activationinfo 
    WHERE 
        CASE WHEN @role = 'Admin'
             THEN account_id = @AccountId
             ELSE Activated_By = @Activated_By
        END
END
like image 616
Glory Raj Avatar asked Feb 13 '26 23:02

Glory Raj


2 Answers

First variant

SELECT   Name 
FROM     pass_activationinfo 
WHERE 
        (@role = 'Admin' AND account_id = @AccountId)
    OR (@role <> 'Admin' AND Activated_By = @Activated_By)

Second variant

SELECT   Name 
FROM     pass_activationinfo 
WHERE 
    CASE
      WHEN @role = 'Admin' AND account_id = @AccountId THEN 1
      WHEN @role <> 'Admin' AND Activated_By = @Activated_By THEN 1
      ELSE 0
    END = 1
like image 129
Sergey Menshov Avatar answered Feb 16 '26 15:02

Sergey Menshov


Change the case and use OR instead

CREATE procedure [dbo].[getName]            
    @AccountId int,    
    @role varchar(50),
    @Activated_By nvarchar(100)            
AS            
BEGIN           

    SELECT   
        Name 
    FROM pass_activationinfo 
    WHERE 
        (
            @role = 'Admin'
            AND
            account_id = @AccountId
         )
         OR
         (
            @role <> 'Admin'
            AND
            Activated_By = @Activated_By
         )


END
like image 31
Jayasurya Satheesh Avatar answered Feb 16 '26 14:02

Jayasurya Satheesh



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!