2013-07-24 4 views
0

У меня проблема общая сумма в mysql crosstab.mysql crosstab неправильная сумма

мое кодирование, как:

SELECT IFNULL(Prtype,''Total'') as Prtype,sum(t.data) AS Total,', 
SUM(IF(office ='A',`data`, NULL)) AS 'A', 
SUM(IF(office ='B',`data`, NULL)) AS 'B', 
SUM(IF(office ='C',`data`, NULL)) AS 'C', 
FROM((SELECT Prtype, office,`data` as data 
FROM TBLGETDATAALL_1 GROUP BY office,Prtype,data) t) GROUP BY Prtype 

Проблема тотально не равна сумме всех офисных.

Simple data: 

Type Total A B C 
P1   3 2 1 1 
P2   6 2 2 1 
P3   6 3 1 1 


Simple data 2: 

Total: 50,455 

(1,333 1,352 1,216 2,127 1,520 2,700 1,174 1,250 2,458 1,374 2,877 970 2,458 2,930 1,365 2,655 1,184 3,001 2,421 2,689 2,220 1,590 2,678 2,212 1,329)=49083 

why total=50,455 and sum each office=49083 ? 

--------- 
table name 
Prtype office data 
p1   A  2 
P2   B  3 
P3   C  1 
... ...  .... .... 
---------- 

С уважением,

ответ

0

попробовать это

 select Prtype , A , B , C , sum(A +B +C) as total from (
     SELECT IFNULL(Prtype,'Total') as Prtype , 
     SUM(IF(office ='A',`data`, 0)) AS A, 
     SUM(IF(office ='B',`data`, 0)) AS B, 
     SUM(IF(office ='C',`data`, 0)) AS C 
     FROM TBLGETDATAALL_1 
     GROUP BY Prtype) t 
     GROUP BY Prtype 

DEMO HERE

+0

Дорогой я попробовал arleady, unknow sum (A + B + C) этот. –

+0

Уважаемый эхо меня, он не знает колонки A и B.SELECT IFNULL (Prtype, '' Total '') как Prtype, sum (A + B + C) AS Total, SUM (IF (office = 'A', 'data ', NULL)) AS A, SUM (IF (office = 'B',' data', NULL)) AS B, SUM (IF (office = 'C', 'data', NULL)) AS C FROM ((SELECT Prtype, office, 'data' as data FROM TBLGETDATAALL_1 GROUP BY office, Prtype, data) –

+0

Я отредактировал ваш вопрос, пожалуйста, заполните данные примера, как я показал. Ваши столбцы и некоторые данные –

0

Использование 0 вместо нулевой

SELECT IFNULL(Prtype,''Total'') as Prtype,sum(t.data) AS Total,', 
SUM(IF(office ='A',`data`, 0)) AS 'A', 
SUM(IF(office ='B',`data`, 0)) AS 'B', 
SUM(IF(office ='C',`data`, 0)) AS 'C', 
FROM((SELECT Prtype, office,`data` as data 
FROM TBLGETDATAALL_1 GROUP BY office,Prtype,data) t) GROUP BY Prtype 
+0

Вы можете редактировать свой вопрос остроумие h структуры и данных выборки TBLGETDATAALL_1 – Akhil

+0

Уважаемый Akhil, я пробовал изменить значение null на 0, еще не обработанное. –