sql server - sql query to return date range or all records or only null records -
i have sql query can not work correctly
here simplified version of query.
select * permit inner join bmp on permit.permitnumber = bmp.permitnumber left join bmpinspection bi on permit.permitnumber = bi.permitnumber , bmp.bmpnumber = bi.bmpnumber permit.permitnumber = 's002552' , ( ( @startdate null , @enddate null ) or ( bi.dtactiondate > dateadd(day, -1, @startdate) , bi.dtactiondate < dateadd(day, 1, @enddate) ) or ( bi.dtactiondate > dateadd(day, -1, @startdate) , @enddate null ) or ( @startdate null , bi.dtactiondate < dateadd(day, 1, @enddate) ) ) the desired behavior
- return records in date range when start date , end date specified
- return null dates or less end date when start date null , end date has date
- return null or greater start date when start date has date , end date null
- return records null date when both start date , end date null
right can is date range or records nulls , valid dates.
for condition:
return records null date when both start date , end date null
change:
( @startdate null , @enddate null ) to
( @startdate null , @enddate null , bi.dtactiondate null)
Comments
Post a Comment