CREATE PROC [dbo].[GetSimExpiryDate]
(@val varchar(5))
AS
BEGIN
IF(@val ='1')
BEGIN
(SELECT
WS.WSRecordId, WS.SIMNumber,
BES.DisplayName,
BES.PIN, BES.BESSqlServer,
CONVERT(VARCHAR(11), WS.ExpiryDate, 106) as ExpiryDate
FROM
WEBSERVICE_CACHE AS WS
LEFT OUTER JOIN
BES_SERVER_CACHE AS BES ON WS.SIMNumber = LEFT(BES.ICCID, 19)
WHERE
CONVERT(DATETIME, GETDATE(), 109) > CONVERT(DATETIME, WS.ExpiryDate, 109))
END
ELSE IF(@val ='2')
BEGIN
(SELECT
WS.WSRecordId, WS.SIMNumber,
BES.DisplayName,
BES.PIN, BES.BESSqlServer,
CONVERT(VARCHAR(11), WS.ExpiryDate, 106) as ExpiryDate
FROM
WEBSERVICE_CACHE AS WS
LEFT OUTER JOIN
BES_SERVER_CACHE AS BES ON WS.SIMNumber = LEFT(BES.ICCID,19)
WHERE
MONTH( WS.ExpiryDate) = MONTH(GETDATE())
AND YEAR(WS.ExpiryDate) = YEAR(GETDATE())
AND CONVERT(DATETIME, GETDATE(), 109) <= CONVERT(DATETIME, WS.ExpiryDate, 109))
END
I have a stored procedure which has if and else blocks based on the parameter passed in procedure
In both the queries all the code is same except the where clause how to remove this redundancy. As I have lot of elseif