return: text lang: plpgsql src: | DECLARE result TEXT; BEGIN INSERT INTO pmsi.p_rss_etat ( rss_id, est_groupe, est_valide, date_groupage, est_facture, date_facture ) SELECT p_rss.oid AS rss_id, CASE WHEN en_cours = '0' AND ghm_id <> 0 THEN '1' WHEN en_cours = '0' AND ghm_id = 0 THEN '9' WHEN en_cours = '1' AND ghm_id = 0 THEN '9' WHEN en_cours_etat IN ('G', 'V') THEN '1' ELSE '0' END AS est_groupe, CASE WHEN en_cours = '0' AND ghm_id <> 0 THEN '1' WHEN en_cours = '0' AND ghm_id = 0 THEN '9' WHEN en_cours = '1' AND ghm_id = 0 THEN '9' WHEN en_cours_etat IN ('V') THEN '1' ELSE '0' END AS est_valide, '20991231' AS date_groupage, CASE WHEN en_cours = '0' THEN '1' WHEN en_cours_etat IN ('F') THEN '1' WHEN base_remboursement > 0 THEN '1' ELSE '0' END AS est_facture, '20991231' AS date_facture FROM pmsi.p_rss LEFT JOIN pmsi.p_rss_etat ON p_rss_etat.rss_id = p_rss.oid WHERE p_rss_etat.rss_id IS NULL; UPDATE pmsi.p_rss_etat SET est_groupe = CASE WHEN en_cours = '0' AND ghm_id <> 0 THEN '1' WHEN en_cours = '0' AND ghm_id = 0 THEN '9' WHEN en_cours = '1' AND ghm_id = 0 THEN '9' WHEN en_cours_etat IN ('G', 'V') THEN '1' ELSE '0' END, est_valide = CASE WHEN en_cours = '0' AND ghm_id <> 0 THEN '1' WHEN en_cours = '0' AND ghm_id = 0 THEN '9' WHEN en_cours = '1' AND ghm_id = 0 THEN '9' WHEN en_cours_etat IN ('V') THEN '1' ELSE '0' END, est_facture = CASE WHEN en_cours = '0' THEN '1' WHEN en_cours_etat IN ('F') THEN '1' WHEN base_remboursement > 0 AND rss_id NOT IN (SELECT rss_id FROM pmsi.p_rsf_detail WHERE nature = 'V') THEN '1' ELSE '0' END FROM pmsi.p_rss WHERE p_rss.oid = p_rss_etat.rss_id AND ( est_groupe IS DISTINCT FROM CASE WHEN en_cours = '0' AND ghm_id <> 0 THEN '1' WHEN en_cours = '0' AND ghm_id = 0 THEN '9' WHEN en_cours = '1' AND ghm_id = 0 THEN '9' WHEN en_cours_etat IN ('G', 'V') THEN '1' ELSE '0' END OR est_valide IS DISTINCT FROM CASE WHEN en_cours = '0' AND ghm_id <> 0 THEN '1' WHEN en_cours = '0' AND ghm_id = 0 THEN '9' WHEN en_cours = '1' AND ghm_id = 0 THEN '9' WHEN en_cours_etat IN ('V') THEN '1' ELSE '0' END OR est_facture IS DISTINCT FROM CASE WHEN en_cours = '0' THEN '1' WHEN en_cours_etat IN ('F') THEN '1' WHEN base_remboursement > 0 AND rss_id NOT IN (SELECT rss_id FROM pmsi.p_rsf_detail WHERE nature = 'V') THEN '1' ELSE '0' END ); DELETE FROM pmsi.p_rss_etat WHERE rss_id IN ( SELECT p_rss_etat.rss_id FROM pmsi.p_rss_etat LEFT JOIN pmsi.p_rss ON p_rss.oid = p_rss_etat.rss_id WHERE p_rss.oid IS NULL ); RETURN 'OK'; END;