mysql - 卡住总和小计mysql交叉表

标签 mysql stored-procedures

我想在 mysql 存储过程中通过交叉表对总计和小计求和。 我会在脚本中添加小计。

        SET @VARBRANCH='
            MAX(IF(Branch =''A'',`data`, NULL)) AS ''A'',
            MAX(IF(Branch =''B'',`data`, NULL)) AS ''B''';

            DROP TEMPORARY TABLE IF EXISTS TBL_ACBR;
            SET @VARBRANCH=CONCAT('CREATE TEMPORARY TABLE TBL_ACBR SELECT Prtype,SUM(data) AS Total,  '
            ,@VARBRANCH,
            ' FROM(
            SELECT Prtype, Branch, `data` FROM TBLGETDATAALL_1 GROUP BY  Branch,Prtype) t
            GROUP BY Prtype;');
            PREPARE stmacbr FROM @VARBRANCH;
            EXECUTE stmacbr;
            DEALLOCATE PREPARE stmacbr; 

            SELECT * FROM TBL_ACBR;

上面的脚本如下:

Prtype Total  A  B
JAM     5     3  2  
Jim     5     3  3

我需要的结果如下:

Prtype Total  A  B
JAM     5     3  2  
Jim     5     3  3
Total   10    6   5

最佳答案

只需将您的最终选择更改为包含总数的并集即可。

改变:

SELECT * FROM TBL_ACBR

收件人:

SELECT Prtype, Total, A, B FROM TBL_ACBR
UNION
SELECT 'Total' AS Prtype, SUM(Total), SUM(A), SUM(B) FROM TBL_ACBR

关于mysql - 卡住总和小计mysql交叉表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16881188/

相关文章:

php - MySQL PHP 中的 where 子句中的 if 条件

C# Linq 有四个表和一个并不总是需要的外键

java - JDBC中如何调用存储过程

MySQL 存储过程并且仅在特定条件下更新

mysql - 如何创建触发器自引用触发器......是的

mysql - 错误 2005 (HY000) : Unknown MySQL server host '[us-cdbr-azure-sat-02.cloudapp.net]' (0)

php - 显示它们之前如何从数据库中订购获取的对象?

mysql - 尝试编译函数时出现语法错误

mysql - 如何自动增加一个值

Mysql只选择有数据的列