roll_up_account_table_by_gn_level#
Parameters#
Name |
Type |
|---|---|
table_name |
VARCHAR(50) |
from_level |
INT |
to_level |
INT |
SQL Definition#
CREATE PROCEDURE `roll_up_account_table_by_gn_level`(IN table_name VARCHAR(50), IN from_level INT, IN to_level INT)
BEGIN
SET SQL_SAFE_UPDATES = 0;
SET @stmt = CONCAT(
'UPDATE ', table_name, ',',
'(SELECT a', to_level, '.gncoa AS ac', to_level, '_coa, ',
'SUM(ua', from_level, '.total_cost) AS a', to_level, '_cal_total_cost ',
'FROM ', table_name, ' AS ua', from_level,
' JOIN ', table_name, ' AS a', to_level,
' ON ua', from_level, '.gn_supaccount = a', to_level, '.gncoa ',
'WHERE ua', from_level, '.gn_level = ', from_level,
' AND a', to_level, '.gn_level = ', to_level,
' GROUP BY a', to_level, '.gncoa) AS updated_ac', to_level,
' SET ',
table_name, '.total_cost = updated_ac', to_level, '.a', to_level, '_cal_total_cost, ',
table_name, '.review_status = \'Updated\' ',
'WHERE ',
table_name, '.gncoa = updated_ac', to_level, '.ac', to_level, '_coa'
);
-- Debug: Print the constructed SQL statement
SELECT @stmt;
PREPARE stmt FROM @stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;;