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

  1. return records in date range when start date , end date specified
  2. return null dates or less end date when start date null , end date has date
  3. return null or greater start date when start date has date , end date null
  4. 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

Popular posts from this blog

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -

php - Controller/JToolBar not working in Joomla 2.5 -