sql >> Databasteknik >  >> RDS >> Sqlserver

En enda sql-fråga som kan hantera både null eller värderat datumintervall i sql-servern

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

Detta kommer att vara mest effektivt om det finns ett index på mydate , eftersom detta villkor är sargbart och kommer att använda en Index Seek .

Om det inte finns något index, använd IFNULL konstruktioner föreslagna av andra.



  1. Att använda en etikett i en ha-sats i sqlachemy

  2. PostgreSQL i Helm:initdbScripts Parameter

  3. Om du väljer Distinkt fält och radnummer bara för att visa ett id-nummer får du dubblerade data

  4. Tillåt endast postgres användarlistroller