I have a requirement to write a PROCEDURE that returns data based on the filter parameter. If they don't pass the filter it should just not use them. I remember I used to do something like the below query. In where clause we used to check for the parameter instead of writing multiple IF clauses. Any one who can help? CREATE TABLE TEST ( ID FLOAT, NAME VARCHAR(50), CHECKEDINTIME VARCHAR(10), CHECKEDOUTTIME VARCHAR(10), NOSHOWTIME VARCHAR(10))INSERT INTO TEST VALUES (1, 'EXAM 1', '10:23:00', NULL, NULL)INSERT INTO TEST VALUES (1, 'EXAM 2', '09:13:00', '11:23:00', NULL)INSERT INTO TEST VALUES (1, 'EXAM 3', NULL, NULL, '09:00:00')INSERT INTO TEST VALUES (1, 'EXAM 4', NULL, NULL, '10:10:00')DECLARE @ID FLOAT = NULL, @IsCheckedIn BIT = 1, @IsCheckedOut BIT = null, @IsNoShow BIT = NULLBEGIN SELECT *FROM TESTWHERE (@ID IS NULL OR [ID] = @ID) AND ( (@IsCheckedIn IS NULL OR (@IsCheckedIn = 1 AND CHECKEDINTIME IS NOT NULL)) OR (@IsCheckedOut IS NULL OR (@IsCheckedOut = 1 AND CHECKEDOUTTIME IS NOT NULL)) OR (@IsNoShow IS NULL OR (@IsNoShow = 1 AND NOSHOWTIME IS NOT NULL)) )END
This should actually return all the data where user has checked in. If user passes IsCheckedIn and IsNoShow true then it should give all the records that checkedouttime and noshowtime.