Мне нужна помощь, я написал запрос в 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, так как позже я буду запрашивать его, используя другие запросы.
Является ли это возможным ?