1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| select
tb_sr.code_sr,
tb_sr.nom_sr,
case
when not(tb_sr_service.date_bilan is null) then tb_sr_service.date_bilan
else tb_energie.date_mois
end date_bilan,
sum( tb_energie.montant_facture ) facture,
sum( tb_sr_service.volume_releve ) volume,
sum( tb_frais_exploitations.frais_total ) frais_exp,
-- ratio
(coalesce(sum( tb_energie.montant_facture ), 0) +
coalesce(sum( tb_frais_exploitations.frais_total ), 0) ) /
nullif(sum( tb_sr_service.volume_releve ), 0) ratio
from tb_sr
left outer join tb_sr_service on (tb_sr.code_sr = tb_sr_service.code_sr)
left outer join tb_energie on (tb_sr_service.code_sr = tb_energie.code_sr)
and (tb_sr_service.date_bilan = tb_energie.date_mois)
left outer join tb_sr_arret on (tb_energie.code_sr = tb_sr_arret.code_sr)
and (tb_energie.date_mois = tb_sr_arret.date_bilan)
and (tb_sr_arret.code_sr = tb_sr.code_sr)
left outer join tb_frais_exploitations on (tb_sr_service.code_sr = tb_frais_exploitations.code_sr)
and (tb_sr_service.date_bilan = tb_frais_exploitations.date_mois)
where (3 between cast(:d_debut as date) and cast(:d_fin as date ))
group by 1, 2, 3
order by 1, 2, 3 |
Partager