Возврат 0, если результаты не возвращаются в запросе на соединение для базы данных PostgreSQL 9.2 после использования Coalesce - PullRequest
0 голосов
/ 15 марта 2019

Мне нужна помощь, я написал запрос в PostgreSQL 9.2, как показано ниже. Возвращать строки, указывающие ноль, когда результатов нет, в настоящее время они не возвращают записей даже после попытки использовать COALESCE.

With S as (select test.Name as Test,result.value as result,concat(person.first_name,' ', person.last_name) as "Name",
extract (Year from (select  (age (patient.birth_date)))) as age
from  clinlims.analysis
INNER JOIN clinlims.test on analysis.test_id=test.id
INNER JOIN clinlims.result on analysis.id = result.analysis_id
INNER JOIN clinlims.sample_item on sample_item.id = analysis.sampitem_id
INNER JOIN clinlims.sample_human on sample_human.samp_id = sample_item.samp_id
INNER JOIN clinlims.patient on patient.id = sample_human.patient_id
INNER JOIN clinlims.person on person.id = patient.person_id)

select  Test , coalesce (count(*),0) as "Number Positive" 
from S where result = 'value' and test = 'Haemoglobin' 
group by Test

Я проверил решение здесь PostgreSQL - считать данные как ноль, если они нулевые (когда используется условие) но в моем случае это не работает, так как я не хочу перемещать мое условие where в S TABLE, так как позже я буду запрашивать его, используя другие запросы. Является ли это возможным ?

1 Ответ

0 голосов
/ 15 марта 2019

Рассмотрим суммирование условного предложения WHERE:

select  Test, 
        sum((result = 'value' and test = 'Haemoglobin')::integer) as "Number Positive" 
from S
group by Test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...