sql >> Database >  >> RDS >> Sqlserver

Een enkele sql-query die zowel een null- als een gewaardeerd datumbereik in de sql-server kan verwerken

WITH    limits AS
        (
        SELECT  COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
        FROM    mytable
        )
SELECT  m.*
FROM    limits
JOIN    mytable m
ON      mydate BETWEEN startDate AND endDate

Dit is het meest efficiënt als er een index is op mydate , aangezien deze voorwaarde sargable is en een Index Seek . zal gebruiken .

Als er geen index is, gebruik dan IFNULL constructies voorgesteld door anderen.



  1. Hoe verplaats ik een tabel naar een bepaalde FileGroup in SQL Server 2008?

  2. SQL Backup Recovery Tool om beschadigde SQL-back-up te herstellen - Productbeoordeling - Een gastpost van Daniel Jones

  3. Ruby on Rails-databasemigratie maakt geen externe sleutels in MySQL-tabellen

  4. Ernstige prestatieproblemen met MySQL-query's na het toevoegen van een voorwaarde