Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Una singola query sql in grado di gestire intervalli di date sia nulli che con valori nel server 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

Questo sarà più efficiente se c'è un indice su mydate , poiché questa condizione è selezionabile e utilizzerà un Index Seek .

Se non c'è un indice, usa IFNULL costrutti proposti da altri.