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

Come posso includere valori null in un MIN o MAX?

È un po' brutto ma perché NULL s hanno un significato speciale per te, questo è il modo più pulito in cui posso pensare di farlo:

SELECT recordid, MIN(startdate),
   CASE WHEN MAX(CASE WHEN enddate IS NULL THEN 1 ELSE 0 END) = 0
        THEN MAX(enddate)
   END
FROM tmp GROUP BY recordid

Cioè, se qualsiasi riga ha un NULL , vogliamo forzare che sia la risposta. Solo se nessuna riga contiene un NULL dovremmo restituire il MIN (o MAX ).