Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Uma única consulta sql que pode lidar com intervalo de data nulo ou valorizado no servidor 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

Isso será mais eficiente se houver um índice em mydate , já que esta condição é sargável e usará um Index Seek .

Se não houver índice, use IFNULL construções propostas por outros.