sql >> Database >  >> RDS >> Oracle

SQL MIN-waarde selecteren uit rijgegevens met null-waarden

Het klinkt alsof je iets wilt als

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

waarbij 999999999 een numerieke waarde is die groot genoeg is om altijd groter te zijn dan elke andere geldige waarde. Als het mogelijk is dat alle drie de kolommen NULL . hebben of 0 waarden, dan wilt u waarschijnlijk een extra controle toevoegen dat als het resultaat van die least functie is 999999999 dat u 0 of NULL retourneert of wat ook maar logisch is.

@X-Zero was zo vriendelijk om een ​​werkend SQL Fiddle-voorbeeld samen te stellen van deze constructie. Merk op dat zijn voorbeeld de rijen uitfiltert waar alle drie de kolommen ofwel NULL . hebben of 0 waarden.



  1. Datum-tijdgegevens opslaan als getallen

  2. Tellen met LEFT JOIN toont slechts één rij

  3. SQL-fout:onjuiste syntaxis bij het trefwoord 'Gebruiker'

  4. Hoe toekomstige(!) datums in een database op te slaan