SELECT p.uid as ‘project_id’, p.project_number, b.uid as ‘budget_center_id’, b.center_number, b.appropriation, a.year as ‘budget_year’,
REPLACE (FORMAT(a.amount,2),’,’,”) as amount, o.uid as ‘obligation_outlay_id’, o.year_count, o.year as ‘obligation_outlay_year’, o.type,
REPLACE (FORMAT(o.month_1, 2),’,’,”) as month_1,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_1 * a.amount / 100), (g.obligation_month_1 * a.amount) / 100), 2),’,’,”) as goal_month_1,
IF (o.month_1 < IF (o.type like ‘%Outlay%’, (g.outlay_month_1 * a.amount / 100), (g.obligation_month_1 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_1,
REPLACE (FORMAT(o.month_2, 2),’,’,”) as month_2,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_2 * a.amount / 100), (g.obligation_month_2 * a.amount) / 100), 2),’,’,”) as goal_month_2,
IF (o.month_2 < IF (o.type like ‘%Outlay%’, (g.outlay_month_2 * a.amount / 100), (g.obligation_month_2 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_2,
REPLACE (FORMAT(o.month_3, 2),’,’,”) as month_3,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_3 * a.amount / 100), (g.obligation_month_3 * a.amount) / 100), 2),’,’,”) as goal_month_3,
IF (o.month_3 < IF (o.type like ‘%Outlay%’, (g.outlay_month_3 * a.amount / 100), (g.obligation_month_3 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_3,
REPLACE (FORMAT(o.month_4, 2),’,’,”) as month_4,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_4 * a.amount / 100), (g.obligation_month_4 * a.amount) / 100), 2),’,’,”) as goal_month_4,
IF (o.month_4 < IF (o.type like ‘%Outlay%’, (g.outlay_month_4 * a.amount / 100), (g.obligation_month_4 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_4,
REPLACE (FORMAT(o.month_5, 2),’,’,”) as month_5,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_5 * a.amount / 100), (g.obligation_month_5 * a.amount) / 100), 2),’,’,”) as goal_month_1,
IF (o.month_5 < IF (o.type like ‘%Outlay%’, (g.outlay_month_5 * a.amount / 100), (g.obligation_month_5 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_5,
REPLACE (FORMAT(o.month_6, 2),’,’,”) as month_6,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_6 * a.amount / 100), (g.obligation_month_6 * a.amount) / 100), 2),’,’,”) as goal_month_6,
IF (o.month_6 < IF (o.type like ‘%Outlay%’, (g.outlay_month_6 * a.amount / 100), (g.obligation_month_6 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_6,
REPLACE (FORMAT(o.month_7, 2),’,’,”) as month_7,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_7 * a.amount / 100), (g.obligation_month_7 * a.amount) / 100), 2),’,’,”) as goal_month_7,
IF (o.month_7 < IF (o.type like ‘%Outlay%’, (g.outlay_month_7 * a.amount / 100), (g.obligation_month_7 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_7,
REPLACE (FORMAT(o.month_8, 2),’,’,”) as month_8,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_8 * a.amount / 100), (g.obligation_month_8 * a.amount) / 100), 2),’,’,”) as goal_month_8,
IF (o.month_8 < IF (o.type like ‘%Outlay%’, (g.outlay_month_8 * a.amount / 100), (g.obligation_month_8 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_8,
REPLACE (FORMAT(o.month_9, 2),’,’,”) as month_9,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_9 * a.amount / 100), (g.obligation_month_9 * a.amount) / 100), 2),’,’,”) as goal_month_9,
IF (o.month_9 < IF (o.type like ‘%Outlay%’, (g.outlay_month_9 * a.amount / 100), (g.obligation_month_9 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_9,
REPLACE (FORMAT(o.month_10, 2),’,’,”) as month_10,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_10 * a.amount / 100), (g.obligation_month_10 * a.amount) / 100), 2),’,’,”) as goal_month_10,
IF (o.month_10 < IF (o.type like ‘%Outlay%’, (g.outlay_month_10 * a.amount / 100), (g.obligation_month_10 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_10,
REPLACE (FORMAT(o.month_11, 2),’,’,”) as month_11,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_11 * a.amount / 100), (g.obligation_month_11 * a.amount) / 100), 2),’,’,”) as goal_month_11,
IF (o.month_11 < IF (o.type like ‘%Outlay%’, (g.outlay_month_11 * a.amount / 100), (g.obligation_month_11 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_11,
REPLACE (FORMAT(o.month_12, 2),’,’,”) as month_12,
REPLACE (FORMAT(IF (o.type like ‘%Outlay%’, (g.outlay_month_12 * a.amount / 100), (g.obligation_month_12 * a.amount) / 100), 2),’,’,”) as goal_month_12,
IF (o.month_12 < IF (o.type like ‘%Outlay%’, (g.outlay_month_12 * a.amount / 100), (g.obligation_month_12 * a.amount) / 100), ‘FLAG’, ‘OK’) as flag_month_12
FROM project_portfolio.projects p, project_portfolio.budget_centers b, project_portfolio.budget_amounts a, project_portfolio.obligations_outlays o, project_portfolio.obligations_outlays_goals g
WHERE p.uid = b.project_id AND b.uid = a.budget_center_id AND b.uid = o.funding_id AND b.appropriation = g.appropriation
AND g.year = year_count AND a.year = g.year
AND (
o.month_1 < IF (o.type like ‘%Outlay%’, (g.outlay_month_1 * a.amount / 100), (g.obligation_month_1 * a.amount) / 100) OR
o.month_2 < IF (o.type like ‘%Outlay%’, (g.outlay_month_2 * a.amount / 100), (g.obligation_month_2 * a.amount) / 100) OR
o.month_3 < IF (o.type like ‘%Outlay%’, (g.outlay_month_3 * a.amount / 100), (g.obligation_month_3 * a.amount) / 100) OR
o.month_4 < IF (o.type like ‘%Outlay%’, (g.outlay_month_4 * a.amount / 100), (g.obligation_month_4 * a.amount) / 100) OR
o.month_5 < IF (o.type like ‘%Outlay%’, (g.outlay_month_5 * a.amount / 100), (g.obligation_month_5 * a.amount) / 100) OR
o.month_6 < IF (o.type like ‘%Outlay%’, (g.outlay_month_6 * a.amount / 100), (g.obligation_month_6 * a.amount) / 100) OR
o.month_7 < IF (o.type like ‘%Outlay%’, (g.outlay_month_7 * a.amount / 100), (g.obligation_month_7 * a.amount) / 100) OR
o.month_8 < IF (o.type like ‘%Outlay%’, (g.outlay_month_8 * a.amount / 100), (g.obligation_month_8 * a.amount) / 100) OR
o.month_9 < IF (o.type like ‘%Outlay%’, (g.outlay_month_9 * a.amount / 100), (g.obligation_month_9 * a.amount) / 100) OR
o.month_10 < IF (o.type like ‘%Outlay%’, (g.outlay_month_10 * a.amount / 100), (g.obligation_month_10 * a.amount) / 100) OR
o.month_11 < IF (o.type like ‘%Outlay%’, (g.outlay_month_11 * a.amount / 100), (g.obligation_month_11 * a.amount) / 100) OR
o.month_12 < IF (o.type like ‘%Outlay%’, (g.outlay_month_12 * a.amount / 100), (g.obligation_month_12 * a.amount) / 100)
)
ORDER BY b.uid, a.year, o.year