Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Намерете последователни дати в рамките на определен период, където е наличен треньор, който да планира

не съм сигурен как ще се представи това срещу по-голям набор от данни, но получава правилните резултати за предоставения набор от данни. Липсващите точки от данни се приемат за налични.

declare @startDate datetime, @endDate datetime, @days int
select @startDate = '6/1/2013', @endDate='6/3/2013', @days=2

select trainer, min(date)
from
    (
    select  trainer,date,
            (select top 1 date
            from mySchedule sInner
            where sInner.date > sOuter.date
                    and sInner.trainer = sOuter.trainer
                    and sInner.Dirty = 1    
                    and sInner.date between @startDate and @endDate
            order by sInner.date) as nextDirtyDate
    from    mySchedule sOuter
    where sOuter.dirty=0
            and sOuter.date between @startDate and @endDate
    ) sub
group by trainer, nextDirtyDate
having dateDiff(d, min(date), isNull(nextDirtyDate,dateAdd(d,1,@endDate))) >= @days


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли някакъв начин/инструмент за идентифициране на прогнозното време за изпълнение на заявката в SQL sERVER

  2. 3 начина за извличане на месеца от дата в SQL Server (T-SQL)

  3. Намерете колони, които съдържат само нули

  4. Липсва Microsoft Excel като опция в инструмента за импортиране на данни на SQL Server

  5. Как да върнете Unix Timestamp в SQL Server (T-SQL)