Можете да:
SELECT COALESCE(SUM(columnA), 0) FROM my_table WHERE columnB = 1
INTO res;
Това се случва да работи, защото вашата заявка има обобщена функция и следователно винаги връща ред, дори ако нищо не е намерено в основната таблица.
Обикновените заявки без агрегат ще върнат без ред в такъв случай. COALESCE
никога не би се обадил и не би могъл да те спаси. Докато работим с една колона, вместо това можем да обвием цялата заявка:
SELECT COALESCE( (SELECT columnA FROM my_table WHERE ID = 1), 0)
INTO res;
Работи и за оригиналната ви заявка:
SELECT COALESCE( (SELECT SUM(columnA) FROM my_table WHERE columnB = 1), 0)
INTO res;
Повече за COALESCE()
в ръководството.
Още за агрегатните функции в ръководството.
Още алтернативи в тази по-късна публикация:
- Как да върна стойност от функция, ако не е намерена стойност