sql - TSQL - Find the minimum in the range -


edit: problem statement: select siiis , sulls data between start of mar , end of may

for each “xfff” in siiis matches in “xfff” in sulls “start_time” in sulls after “case_create” in siiis , time difference between “start_time” , “case_create” less 3 hours. select match smallest time difference

select  si.xfff xfff,      datediff(hour, si.case_create, su.start_time) diffinhours siiis si inner join sulls su on si.xfff= su.xfff  ((si.case_create between '20130301' , '20130531') , (su.start_time between '20130301'and '20130531'))  ,   (su.start_time > si.case_create) ,   (datediff(hour, si.case_create, su.start_time) < 3 , datediff(hour, si.case_create, su.start_time) > 0) 

tried clean , fix code, should runs on sqlserver 2008+, datediff not give difference in hours(very common misunderstanding), took different approach:

select  si.num_phone phone,  su.start_time sulstarrttime , si.case_create sistarttime, datediff(hour, 0, su.start_time - si.case_create)  diffinhours siiis si  cross apply (select top 1 * sulls su   si.xfff= su.xfff  , su.start_time > si.case_create  -- less 3 hours difference  , dateadd(hour, 3, si.case_create) > su.start_time  -- more 1 hour difference code indicated needed this, text said otherwise  --and dateadd(hour, 1, si.case_create) <= su.start_time  order start_time ) su si.case_create between '20130301' , '20130531' -- not including of may 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

How to get multiresult with multicondition in Sql Server -