@@ -60,13 +60,41 @@ databaseChangeLog:
6060 sql : |
6161 DO $$
6262 DECLARE
63- rec RECORD;
63+ comp_name_rec RECORD;
64+ revenue_rec RECORD;
6465 BEGIN
65- FOR rec IN SELECT original_name, new_name FROM transform_company_names
66+ FOR comp_name_rec IN SELECT original_name, new_name FROM transform_company_names ORDER BY original_name
6667 LOOP
67- UPDATE federal_revenue_by_company
68- SET corporate_name = rec.new_name
69- WHERE corporate_name = rec.original_name;
68+ FOR revenue_rec IN SELECT * FROM federal_revenue_by_company WHERE corporate_name = comp_name_rec.original_name ORDER BY calendar_year
69+ LOOP
70+ BEGIN
71+ UPDATE federal_revenue_by_company
72+ SET corporate_name = comp_name_rec.new_name,
73+ last_update_date = now()
74+ WHERE calendar_year = revenue_rec.calendar_year
75+ AND corporate_name = comp_name_rec.original_name
76+ AND revenue_agency_type = revenue_rec.revenue_agency_type
77+ AND commodity = revenue_rec.commodity;
78+ EXCEPTION
79+ WHEN unique_violation THEN
80+ UPDATE federal_revenue_by_company
81+ SET revenue = revenue + revenue_rec.revenue,
82+ raw_revenue = TO_CHAR(revenue + revenue_rec.revenue, 'L999G999G999G999D99'),
83+ last_update_date = now()
84+ WHERE calendar_year = revenue_rec.calendar_year
85+ AND corporate_name = comp_name_rec.new_name
86+ AND revenue_agency_type = revenue_rec.revenue_agency_type
87+ AND commodity = revenue_rec.commodity;
88+
89+ DELETE FROM federal_revenue_by_company
90+ WHERE calendar_year = revenue_rec.calendar_year
91+ AND corporate_name = revenue_rec.corporate_name
92+ AND revenue_agency_type = revenue_rec.revenue_agency_type
93+ AND commodity = revenue_rec.commodity;
94+ WHEN OTHERS THEN
95+ RAISE NOTICE 'Error: %', SQLERRM;
96+ END;
97+ END LOOP;
7098 END LOOP;
7199 END;
72100 $$;
0 commit comments