Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Temukan tanggal berurutan dalam rentang yang ditentukan di mana Pelatih tersedia untuk dijadwalkan

tidak yakin bagaimana kinerjanya terhadap kumpulan data yang lebih besar, tetapi mendapatkan hasil yang tepat untuk kumpulan data yang disediakan. Titik data yang hilang dianggap tersedia.

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. bagaimana cara mengatur nilai kolom sama dengan no baris?

  2. Bagaimana menerapkan warna dalam output PowerShell

  3. Bagaimana secara akurat menghitung persentase dari total yang terbatas

  4. Apa tabel ajaib yang tersedia di SQL Server 2000?

  5. Hapus titik dan koma dari nilai kolom