Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Eine einzelne SQL-Abfrage, die sowohl Null- als auch Wertdatenbereiche in SQL Server verarbeiten kann

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

Dies ist am effizientesten, wenn es einen Index auf mydate gibt , da diese Bedingung sargable ist und einen Index Seek verwendet .

Wenn kein Index vorhanden ist, verwenden Sie IFNULL von anderen vorgeschlagene Konstrukte.