Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thứ năm các ngày liên tiếp trong một khoảng thời gian xác định mà Huấn luyện viên có thể lên lịch

không chắc chắn điều này sẽ hoạt động như thế nào đối với tập dữ liệu lớn hơn, nhưng nó nhận được kết quả phù hợp với tập dữ liệu được cung cấp. Các điểm dữ liệu bị thiếu được cho là có sẵn.

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. Khám phá các tùy chọn chờ khóa ưu tiên thấp trong SQL Server 2014 CTP1

  2. Cách tốt nhất để chia nhỏ dữ liệu XML thành các cột cơ sở dữ liệu SQL Server

  3. UPDATE hoặc MERGE của các bảng rất lớn trong SQL Server

  4. Làm cách nào để nhận tổng số hàng trong một câu lệnh chọn được thực thi?

  5. Làm thế nào để kiểm tra thời điểm tự động phát triển được thực hiện lần cuối?