2

I want a query to identify the Vehicle Registration Numbers having more than 1 policy with different Insurance Company ID, with overlapping dates. Check this image for the datas

 SELECT Vehicle_N0.*
   FROM excel as Vehicle_N0
  WHERE Vehicle_N0 IN (SELECT Vehicle_N0  
                         FROM excel 
                        GROUP BY Vehicle_N0    
                       HAVING COUNT(DISTINCT Insurance_id) > 1) 
  ORDER BY vehicle_n0

using this query i got the Vehicle Registration Numbers having more than 1 policy with different Insurance Company ID but how to get the overlapping dates.

I tried this query

SELECT * 
  FROM excel 
 WHERE begin_date <= end_date 
    OR begin_date >= end_date;

But i didn't get the overlapped dates.

RealCheeseLord
  • 775
  • 1
  • 12
  • 24
Jerold Joel
  • 209
  • 1
  • 9
  • 21

1 Answers1

2

Using exists() to see if a Vehicle_N0 has an overlapping entry with a different Insurance_Id:

select v.*
from excel as v
where exists ( -- only return rows where this query would return row(s)
  select 1
  from excel as i 
  where i.Vehicle_N0 = v.Vehicle_N0      -- Vehicle_N0 is the same
    and i.Insurance_Id <> v.Insurance_Id -- Insurance_Id is not the same
    and i.end_date > v.begin_date        -- date range overlaps
    and v.end_date > i.begin_date        -- date range overlaps
  )
order by v.Vehicle_N0
SqlZim
  • 36,108
  • 6
  • 38
  • 56