Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Une seule requête sql qui peut gérer à la fois une plage de dates nulle ou valorisée dans le serveur sql

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

Ce sera plus efficace s'il y a un index sur mydate , puisque cette condition est sargable et utilisera un Index Seek .

S'il n'y a pas d'index, utilisez IFNULL constructions proposées par d'autres.