2013-06-02 32 views
1

我想通過mysql存儲過程中的交叉表總和和小計。 我會在我的腳本中添加小計。Stuck sum小計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 
+0

嘗試使用'與rollup'它會直接給你的總和結果。與rollup'在最後一組的末尾添加'的說法。 'GROUP BY Prtype with rollup' http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html – Meherzad

+0

可以編輯我的編碼嗎? –

+0

@Meherzad'rollup'不會爲'A和B'提供'6和5'。 –

回答

0

簡單地改變你的最終選擇是包括總工會。

變化:

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 
+0

[Err] 1137 - 無法重新打開表格:'TBL_ACBR' –