2017-01-18 127 views
0

嗯,我正在使用以下查詢,但是我收到以下錯誤(#1111 - 無效的使用組功能)。這裏的查詢:#1111 - 無效的使用組功能 - MYSQL

SELECT 
    a.`wo_number`, 
    a.`crew_est`, 
    a.`manhour_est`, 
    b.`act_hours`, 
    a.`status`, 
    SUM(CASE 
     WHEN a.`status` = 'FINISH' THEN SUM(a.`status`) 
     ELSE 0 
    END)/SUM(a.`crew_est` * a.`manhour_est`) AS `total_percentage` 
FROM 
    `table_a` AS a 
     LEFT JOIN 
    `table_b` AS b ON a.`wo_number` = b.`wo_number` 
WHERE 
    a.`wo_number` = 'some_number' 
GROUP BY a.`wo_number` , a.`sheet` , a.`serial` 

如果我刪除裏面的CASE SUM()的時候的話,那麼查詢工作。但是,我沒有得到一個準確的結果,我的需要。

任何幫助將不勝感激。 謝謝。

+0

爲什麼你需要的'status'場的嵌套總和?另外,爲什麼總結文本字段「狀態」? – Alfabravo

回答

0

您正在嵌套SUM功能,這是不允許的。

你可能想這樣的:

SELECT 
    a.`wo_number`, 
    a.`crew_est`, 
    a.`manhour_est`, 
    b.`act_hours`, 
    a.`status`, 
    SUM(CASE 
     WHEN a.`status` = 'FINISH' THEN 1 -- or the column you want to aggregate 
    END)/SUM(a.`crew_est` * a.`manhour_est`) AS `total_percentage` 
FROM 
    `table_a` AS a 
     LEFT JOIN 
    `table_b` AS b ON a.`wo_number` = b.`wo_number` 
WHERE 
    a.`wo_number` = 'some_number' 
GROUP BY a.`wo_number` , a.`sheet` , a.`serial` 

此外,簡寫

SUM(CASE 
     WHEN a.`status` = 'FINISH' THEN 1 
    END) 

SUM(a.`status` = 'FINISH') 
+0

我試過了查詢,它正在工作,但結果並不符合我的需要。我嘗試將excel公式轉換爲mysql查詢。這裏是Excel公式:= SUMIF(E $ 3:E $ 19,「FINISH」,D $ 3:D $ 19)/ SUM(D $ 3:D $ 19)其中E $ 3:E $ 19 =狀態,FINISH是條件,D $ 3 :D $ 19是(a.crew_est * a.manhour_est) –

+0

那會是什麼?你爲什麼總結一個文本列「狀態」? – GurV

+0

請幫忙嗎? –

相關問題