Du kunne:
SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;
Dette virker tilfældigvis, fordi din forespørgsel har en samlet funktion og derfor altid returnerer en række, selvom der ikke findes noget i den underliggende tabel.
Almindelige forespørgsler uden aggregat ville returnere ingen række i et sådant tilfælde. COALESCE
ville aldrig blive ringet op og kunne ikke redde dig. Mens vi har at gøre med en enkelt kolonne, kan vi ombryde hele forespørgslen i stedet:
SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;
Virker også til din oprindelige forespørgsel:
SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;
Mere om COALESCE()
i manualen.
Mere om samlede funktioner i manualen.
Flere alternativer i dette senere indlæg:
- Sådan returneres en værdi fra en funktion, hvis der ikke findes nogen værdi