sql >> Database >  >> RDS >> Mysql

Vind datumhiaten met mysql

Dit zou het juiste resultaat moeten geven:

select
  id,
  min(startDate) as startFreeDate,
  count(*) - (endDate is null) numFreeDays
from (
  select
    pb1.id,
    pb1.bookingDate startDate,
    min(pb2.bookingDate) endDate
  from
    pricesBookings pb1 left join pricesBookings pb2
    on pb1.id=pb2.id
       and pb2.price>0
       and pb2.bookingDate>pb1.bookingDate
  where
    pb1.price=0
  group by
    pb1.id,
    pb1.bookingDate
) s
group by id, endDate
order by id, startDate

zie het hier .

Als je moet zoeken naar alle vrije slots van bijvoorbeeld 14 dagen, kun je HAVING toevoegen:

group by id, endDate
having count(*) - (endDate is null) >= 14
order by id, startDate


  1. Hoe ontsnap ik aan een enkele aanhalingsteken in SQL Server?

  2. Haal het juiste deel van een string in SQL Server (T-SQL)

  3. Bereken uw SQL Server Monitoring Total Cost of Ownership

  4. Een lijst<> invoegen in de SQL Server-tabel