You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

53 lines
3.4 KiB

src: |
SELECT t_budgets.oid,
t_budgets_saisis.parent_id,
CASE
WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.code
WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.code
ELSE ''::text
END AS parent_code,
CASE
WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.texte
WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.texte
ELSE ''::text
END AS parent_texte,
CASE
WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.section_id
WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.section_id
ELSE NULL::bigint[]
END AS parent_section_id,
CASE
WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.section_code
WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.section_code
ELSE NULL::text[]
END AS parent_section_code,
CASE
WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.section_texte
WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.section_texte
ELSE NULL::text[]
END AS parent_section_texte,
COALESCE(
CASE
WHEN t_budgets.dimension1 = 'UF'::text THEN t_unites_fonctionnelles.finess_id
WHEN t_budgets.dimension1 = 'SER'::text THEN t_services_facturation.finess_id
ELSE NULL::bigint
END, 0::bigint) AS finess_id,
COALESCE(t_finess_c.code, ''::text) AS finess_code,
COALESCE(t_finess_c.texte, ''::text) AS finess_texte,
t_finess_c.section_id AS finess_section_id,
t_finess_c.section_code AS finess_section_code,
t_finess_c.section_texte AS finess_section_texte,
p_calendrier_mois.date_fin AS date,
t_budgets_saisis.budget_nb_entrees_directes_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_entrees_directes,
t_budgets_saisis.budget_nb_sorties_directes_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_sorties_directes,
t_budgets_saisis.budget_nb_ambulatoires_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_ambulatoires,
t_budgets_saisis.budget_nb_externes_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_externes,
t_budgets_saisis.budget_nb_jours_js_non_inclus_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_jours_js_non_inclus,
t_budgets_saisis.budget_nb_seances_mois[date_part('month'::text, p_calendrier_mois.date_fin)] AS nb_seances
FROM activite.t_budgets
JOIN base.p_calendrier_mois ON p_calendrier_mois.date_fin >= t_budgets.date_debut AND p_calendrier_mois.date_fin <= t_budgets.date_fin
JOIN activite.t_budgets_saisis ON t_budgets_saisis.budget_id = t_budgets.oid
LEFT JOIN activite.t_unites_fonctionnelles ON t_budgets_saisis.parent_id = t_unites_fonctionnelles.oid AND t_budgets.dimension1 = 'UF'::text
LEFT JOIN activite.t_services_facturation ON t_budgets_saisis.parent_id = t_services_facturation.oid AND t_budgets.dimension1 = 'SER'::text
LEFT JOIN activite.t_finess_c ON t_finess_c.oid = COALESCE(t_unites_fonctionnelles.finess_id, t_services_facturation.finess_id)
ORDER BY t_budgets.oid, t_budgets_saisis.parent_code, t_budgets_saisis.parent_section_id;