sql >> Base de Datos >  >> RDS >> PostgreSQL

Devuelve cero si no se encuentra ningún registro

Podrías:

SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;

Esto sucede porque su consulta tiene una función agregada y, en consecuencia, siempre devuelve una fila, incluso si no se encuentra nada en la tabla subyacente.

Las consultas simples sin agregado devolverían ninguna fila En ese caso. COALESCE nunca sería llamado y no podría salvarte. Mientras tratamos con una sola columna, podemos envolver toda la consulta en su lugar:

SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;

También funciona para su consulta original:

SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;

Más sobre COALESCE() en el manual.
Más sobre funciones agregadas en el manual.
Más alternativas en esta publicación posterior:

  • Cómo devolver un valor de una función si no se encuentra ningún valor