mysql - mysql sum(column) 从动态表中仅获取一行的值
问题描述
我有一个有两行的动态表,当我在存储过程中调用 sum(cr) 函数以将总和分配给一个变量时,该函数只返回一行的值,这是我存储过程中的代码:
DROP PROCEDURE IF EXISTS create_table;
CREATE PROCEDURE create_view(IN `query` TEXT, IN `lock_name` CHAR(64), IN
`timeout` TINYINT UNSIGNED)
BEGIN
-- output from GET_LOCK()
DECLARE lock_res TINYINT UNSIGNED;
-- error in query
DECLARE CONTINUE HANDLER
FOR SQLEXCEPTION
SIGNAL SQLSTATE VALUE '45000' SET
MESSAGE_TEXT = '[dyn_lock] Dynamic SQL returned an error';
-- get lock or exit with err
SET lock_res = GET_LOCK(`lock_name`, IFNULL(`timeout`, 5));
IF (lock_res IS NULL) THEN
SIGNAL SQLSTATE VALUE '45000' SET
MESSAGE_TEXT = '[dyn_lock] Could not acquire lock: Unknown error';
ELSEIF (lock_res = 0) THEN
SIGNAL SQLSTATE VALUE '45000' SET
MESSAGE_TEXT = '[dyn_lock] Could not acquire lock: Timeout expired';
END IF;
-- create dynamic view
SET @dyn_sql = CONCAT('CREATE temporary table `', lock_name, '` AS ', query, ';');
PREPARE stmt_dyn_view FROM @dyn_sql;
EXECUTE stmt_dyn_view;
DEALLOCATE PREPARE stmt_dyn_view;
END$$
DROP PROCEDURE IF EXISTS post_entries;
CREATE PROCEDURE `post_entries`(IN `query` TEXT, IN `timeout` TINYINT UNSIGNED,
posting_type varchar(255))
BEGIN
DECLARE eof int default 0;
declare accountID integer(11) default 0;
declare balance float;
declare total_amount float;
CALL create_dynamic_table(`query`, 'dyn_table', `timeout`);
if(posting_type='receivable')then
set total_amount=0;
select sum(dr) into total_amount from dyn_view;
elseif(posting_type='component receivable') then
set total_amount=0;
select sum(cr) into total_amount from dyn_view;
elseif(posting_type="component payable")then
set total_amount=0;
select sum(cr) into total_amount from dyn_view;
end if;
drop temporary table dyn_view;
END$$
有两个值要相加,180000 和 90000,但我只得到 90000。
解决方案
推荐阅读
- node.js - 将数据添加到 mapbox 上显示的地图
- c# - 如何绑定到样式中的静态资源图像?
- javascript - 使用window.prompt时出现问题
- javascript - 递归读取高亮功能
- javascript - 使用 ngx-prism 突出显示 JS 语法
- powershell - 如何在发布期间使用 Azure DevOps Rest API 使用 powershell 获取发布状态(成功、失败)
- java - java计算器——清空累加器
- electron - Electron JS Mac OS X 构建失败,带有 .png 格式的托盘图标
- flutter - 使用 ModalRoute 检索参数时出错
- java - 如何使用不同的标记图标更改标记颜色