question

Kapil Agarwal avatar image
Kapil Agarwal asked

Sql 2005 Case Clause Query

DECLARE @Status INT 
SET @Status = 1 -- (can be 0,1,2)

SELECT * FROM Members 
WHERE Mem_Number in (
 SELECT MemberID 
 FROM GroupMember 
 WHERE GroupId = @GpId 
 AND IsCardNumber = 0) 
AND 
CASE WHEN @Status < 2 THEN Mem_Archeived = @Status
ELSE 1=1
END

--In this If @status variable is less than 2 then Mem_Archeived column is considered otherwise not.


Any help on this would be great!

Thanks Kapil

t-sqlquery
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Scott Fisher avatar image
Scott Fisher answered

I think that should work

DECLARE @Status INT  
SET @Status = 1 -- (can be 0,1,2)

SELECT * FROM Members 
WHERE Mem_Number in (
 SELECT MemberID 
 FROM GroupMember 
 WHERE GroupId = @GpId 
 AND IsCardNumber = 0) 
AND 
Mem_Archeived = CASE WHEN @Status < 2 THEN @Status ELSE Mem_Archeived END
END

Scott

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Aditya Kumar avatar image
Aditya Kumar answered

-- Try this

DECLARE @Status INT SET @Status = 1 -- (can be 0,1,2)

SELECT * FROM Members WHERE Mem_Number in ( SELECT MemberID
FROM GroupMember
WHERE GroupId = @GpId
AND IsCardNumber = 0) AND (Mem_Archeived = @Status OR @Status < 2)

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.