Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL Избор на MIN стойност от ред данни с нулеви стойности

Изглежда, че искате нещо като

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>>

където 999999999 е някаква числова стойност, която е достатъчно голяма, за да бъде винаги по-голяма от всяка друга валидна стойност. Ако е възможно и трите колони да имат NULL или 0 стойности, тогава вероятно бихте искали да добавите допълнителна проверка, че ако резултатът от това least функция е 999999999, че връщате 0 или NULL или каквото друго има смисъл.

@X-Zero беше любезен да състави работещ пример за SQL Fiddle на тази конструкция. Имайте предвид, че неговият пример филтрира редовете, където и трите колони имат или NULL или 0 стойности.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Каква е разликата между „не е в“ и „не съществува“?

  2. Функцията Oracle REPLACE() не обработва връщане на карета и превеждане на ред

  3. Как да използвам GROUP BY на CLOB колона с Oracle?

  4. Извикване на функция PLSQL на Oracle към втора функция

  5. трябва да групирате записи въз основа на съвпадащи сторнирания