Eine einfache Methode, um alle Jahre in den Daten zu erhalten – selbst wenn sie die Bedingungen des where
nicht erfüllen -Klausel -- soll bedingte Aggregation verwenden:
select year(fact_date) as yyyy,
sum(case when stat = 1 and id = 16 then 1 else 0 end) as cnt_16
from tbl_fact
group by year(fact_date)
order by yyyy;