Potresti:
SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;
Questo funziona, perché la tua query ha una funzione aggregata e di conseguenza sempre restituisce una riga, anche se non viene trovato nulla nella tabella sottostante.
Le query semplici senza aggregato restituirebbero nessuna riga in tal caso. COALESCE
non verrebbe mai chiamato e non potrebbe salvarti. Mentre abbiamo a che fare con una singola colonna possiamo invece avvolgere l'intera query:
SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;
Funziona anche per la tua query originale:
SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;
Ulteriori informazioni su COALESCE()
nel manuale.
Ulteriori informazioni sulle funzioni aggregate nel manuale.
Altre alternative in questo post successivo:
- Come restituire un valore da una funzione se non viene trovato alcun valore