sql >> Database teknologi >  >> RDS >> Oracle

SQL Valg af MIN-værdi fra rækkedata med null-værdier

Det lyder som om du vil have noget lignende

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

hvor 999999999 er en numerisk værdi, der er stor nok til, at den altid vil være større end nogen anden gyldig værdi. Hvis det er muligt, at alle tre kolonner vil have NULL eller 0-værdier, så vil du sikkert gerne tilføje en ekstra kontrol, hvis resultatet af den least funktionen er 999999999, at du returnerer 0 eller NULL eller hvad der ellers giver mening.

@X-Zero var venlig nok til at sammensætte et fungerende SQL Fiddle-eksempel af denne konstruktion. Bemærk, at hans eksempel er at bortfiltrere rækkerne, hvor alle tre kolonner enten har NULL eller 0 værdier.



  1. Sådan fungerer LIKE-operatøren i SQLite

  2. CHAR() Eksempler i MySQL

  3. grupper efter hinanden følgende tidsintervaller i sql

  4. 'ER_PARSE_ERROR' på node mysql ved indsættelse af flere værdier