Use MAX() o MIN(), no FIRST(). En este escenario, tendrá todos los NULL en la columna por cada valor de grupo excepto, como máximo, uno con un valor no nulo. Por definición, esto es tanto el MIN como el MAX de ese conjunto de valores (se excluyen todos los nulos).