How should I approach this? Case statements? Something else?
ALTER PROCEDURE [dbo].[FilterReportByStatusandDate]
-- Add the parameters for the stored procedure here
@filterby varchar(50),
@startdate date,
@enddate date
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
IF @filterby = '' SET @filterby = null
IF @startdate = '' SET @startdate = null
IF @enddate = '' SET @enddate = null
IF @filterby is null and
@enddate is null and
@startdate is null
BEGIN
select d.type, m.model, p.phonenumber, prov.provider, b.pin, l.laptop_id, s.description, x.fname, x.lname, u.checkoutdate, u.checkindate
FROM Usage u INNER JOIN Device d
ON u.device_id = d.device_id
INNER JOIN PhoneNumber p
ON d.device_id = p.device_id
INNER JOIN BlackBerry b
ON d.device_id = b.device_id
INNER JOIN Status s
ON u.status_id = s.status_id
LEFT OUTER JOIN Users x
ON x.user_id = u.user_id
INNER JOIN Model m
ON m.device_id = d.device_id
INNER JOIN Provider prov
ON prov.device_id = d.device_id
LEFT OUTER JOIN Laptop l
ON l.device_id = d.device_id
END
IF @enddate is null and
@startdate is null
BEGIN
select d.type, m.model, p.phonenumber, prov.provider, b.pin, l.laptop_id, s.description, x.fname, x.lname, u.checkoutdate, u.checkindate
FROM Usage u INNER JOIN Device d
ON u.device_id = d.device_id
INNER JOIN PhoneNumber p
ON d.device_id = p.device_id
INNER JOIN BlackBerry b
ON d.device_id = b.device_id
INNER JOIN Status s
ON u.status_id = s.status_id
LEFT OUTER JOIN Users x
ON x.user_id = u.user_id
INNER JOIN Model m
ON m.device_id = d.device_id
INNER JOIN Provider prov
ON prov.device_id = d.device_id
LEFT OUTER JOIN Laptop l
ON l.device_id = d.device_id
WHERE s.description = @filterby
END
IF @startdate is null and
@filterby is null
BEGIN
select d.type, m.model, p.phonenumber, prov.provider, b.pin, l.laptop_id, s.description, x.fname, x.lname, u.checkoutdate, u.checkindate
FROM Usage u INNER JOIN Device d
ON u.device_id = d.device_id
INNER JOIN PhoneNumber p
ON d.device_id = p.device_id
INNER JOIN BlackBerry b
ON d.device_id = b.device_id
INNER JOIN Status s
ON u.status_id = s.status_id
LEFT OUTER JOIN Users x
ON x.user_id = u.user_id
INNER JOIN Model m
ON m.device_id = d.device_id
INNER JOIN Provider prov
ON prov.device_id = d.device_id
LEFT OUTER JOIN Laptop l
ON l.device_id = d.device_id
WHERE u.checkindate <= @enddate
END
IF @enddate is null and
@filterby is null
BEGIN
select d.type, m.model, p.phonenumber, prov.provider, b.pin, l.laptop_id, s.description, x.fname, x.lname, u.checkoutdate, u.checkindate
FROM Usage u INNER JOIN Device d
ON u.device_id = d.device_id
INNER JOIN PhoneNumber p
ON d.device_id = p.device_id
INNER JOIN BlackBerry b
ON d.device_id = b.device_id
INNER JOIN Status s
ON u.status_id = s.status_id
LEFT OUTER JOIN Users x
ON x.user_id = u.user_id
INNER JOIN Model m
ON m.device_id = d.device_id
INNER JOIN Provider prov
ON prov.device_id = d.device_id
LEFT OUTER JOIN Laptop l
ON l.device_id = d.device_id
WHERE u.checkoutdate >= @startdate
END
IF @filterby is null
BEGIN
select d.type, m.model, p.phonenumber, prov.provider, b.pin, l.laptop_id, s.description, x.fname, x.lname, u.checkoutdate, u.checkindate
FROM Usage u INNER JOIN Device d
ON u.device_id = d.device_id
INNER JOIN PhoneNumber p
ON d.device_id = p.device_id
INNER JOIN BlackBerry b
ON d.device_id = b.device_id
INNER JOIN Status s
ON u.status_id = s.status_id
LEFT OUTER JOIN Users x
ON x.user_id = u.user_id
INNER JOIN Model m
ON m.device_id = d.device_id
INNER JOIN Provider prov
ON prov.device_id = d.device_id
LEFT OUTER JOIN Laptop l
ON l.device_id = d.device_id
WHERE u.checkoutdate >= @startdate and
u.checkindate <= @enddate
END
IF @enddate is null
BEGIN
select d.type, m.model, p.phonenumber, prov.provider, b.pin, l.laptop_id, s.description, x.fname, x.lname, u.checkoutdate, u.checkindate
FROM Usage u INNER JOIN Device d
ON u.device_id = d.device_id
INNER JOIN PhoneNumber p
ON d.device_id = p.device_id
INNER JOIN BlackBerry b
ON d.device_id = b.device_id
INNER JOIN Status s
ON u.status_id = s.status_id
LEFT OUTER JOIN Users x
ON x.user_id = u.user_id
INNER JOIN Model m
ON m.device_id = d.device_id
INNER JOIN Provider prov
ON prov.device_id = d.device_id
LEFT OUTER JOIN Laptop l
ON l.device_id = d.device_id
WHERE s.description = @filterby and
u.checkoutdate >= @startdate
END
IF @startdate is null
BEGIN
select d.type, m.model, p.phonenumber, prov.provider, b.pin, l.laptop_id, s.description, x.fname, x.lname, u.checkoutdate, u.checkindate
FROM Usage u INNER JOIN Device d
ON u.device_id = d.device_id
INNER JOIN PhoneNumber p
ON d.device_id = p.device_id
INNER JOIN BlackBerry b
ON d.device_id = b.device_id
INNER JOIN Status s
ON u.status_id = s.status_id
LEFT OUTER JOIN Users x
ON x.user_id = u.user_id
INNER JOIN Model m
ON m.device_id = d.device_id
INNER JOIN Provider prov
ON prov.device_id = d.device_id
LEFT OUTER JOIN Laptop l
ON l.device_id = d.device_id
WHERE s.description = @filterby and
u.checkindate <= @enddate
END
END

New Topic/Question
Reply




MultiQuote





|