Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

SQL Selecionando o valor MIN de dados de linha com valores nulos


Parece que você quer algo como
SELECT least( (case when col1 is null or col1 = 0 then 999999999 else col1 end),
              (case when col2 is null or col2 = 0 then 999999999 else col2 end),
              (case when col3 is null or col3 = 0 then 999999999 else col3 end) )
  FROM <<table name>>

em que 999999999 é algum valor numérico grande o suficiente para sempre ser maior do que qualquer outro valor válido. Se for possível que todas as três colunas tenham NULL ou 0 valores, então você provavelmente gostaria de adicionar uma verificação adicional que se o resultado desse least função é 999999999 que você retorna 0 ou NULL ou qualquer outra coisa que faça sentido.

@X-Zero teve a gentileza de montar um exemplo do SQL Fiddle funcional desta construção. Observe que o exemplo dele está filtrando as linhas onde todas as três colunas têm NULL ou 0 valores.