2012-03-15 92 views
0
 
SELECT 
    CASE schuleArtID 
     WHEN 1 THEN SUM(schuleSummeSchueler)/8 
     WHEN 2 THEN SUM(schuleSummeSchueler)/6 * 0.8 
     WHEN 3 THEN SUM(schuleSummeSchueler)/6 * 0.8 
     WHEN 4 THEN SUM(schuleSummeSchueler)/5 * 0.8 
     WHEN 5 THEN SUM(schuleSummeSchueler)/3 * 0.5 
     WHEN 6 THEN SUM(schuleSummeSchueler)/3 * 0.8 
    END AS potenzial 
FROM 
    sys_theorie_schule 
WHERE 
    filialID = '311' 
GROUP BY 
    schuleArtID 

這有效,但現在我需要一個總和,因爲有多行。MySQL SUM函數和CASE語句

 
SELECT 
    SUM(
     CASE schuleArtID 
      WHEN 1 THEN SUM(schuleSummeSchueler)/8 
      WHEN 2 THEN SUM(schuleSummeSchueler)/6 * 0.8 
      WHEN 3 THEN SUM(schuleSummeSchueler)/6 * 0.8 
      WHEN 4 THEN SUM(schuleSummeSchueler)/5 * 0.8 
      WHEN 5 THEN SUM(schuleSummeSchueler)/3 * 0.5 
      WHEN 6 THEN SUM(schuleSummeSchueler)/3 * 0.8 
     END 
    ) AS potenzial 
FROM 
    sys_theorie_schule 
WHERE 
    filialID = '311' 
GROUP BY 
    schuleArtID 

在這裏,我只得到了結果[Err] 1111 - Invalid use of group function

下面是表的結構(對不起,德國列名):

 
CREATE TABLE `sys_theorie_schule` (
    `schuleID` int(11) NOT NULL AUTO_INCREMENT, 
    `filialID` int(11) NOT NULL, 
    `schuleName` varchar(255) NOT NULL, 
    `schuleStrasse` varchar(255) NOT NULL, 
    `schulePlz` varchar(8) NOT NULL, 
    `schuleOrt` varchar(255) NOT NULL, 
    `schuleArtID` int(11) NOT NULL, 
    `schuleSummeSchueler` int(11) NOT NULL, 
    `schuleEntfernung` int(11) NOT NULL, 
    `online` tinyint(1) NOT NULL DEFAULT '1', 
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    PRIMARY KEY (`schuleID`) 
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 

的MySQL版本:5.0.51a-24 + lenny5

可能有人幫助,好嗎? 非常感謝!

+0

用英語重寫您的問題。 – 2012-03-15 09:52:02

回答

2

嘗試:

SELECT 
    SUM(
     CASE schuleArtID 
      WHEN 1 THEN schuleSummeSchueler/8 
      WHEN 2 THEN schuleSummeSchueler/6 * 0.8 
      WHEN 3 THEN schuleSummeSchueler/6 * 0.8 
      WHEN 4 THEN schuleSummeSchueler/5 * 0.8 
      WHEN 5 THEN schuleSummeSchueler/3 * 0.5 
      WHEN 6 THEN schuleSummeSchueler/3 * 0.8 
     END 
    ) AS potenzial 
FROM 
    sys_theorie_schule 
WHERE 
    filialID = '311' 

不能概括已經包括和表達,並且在分組沒有逐schuleArtID當你想要一個總計。

+0

我試過了,但還是一樣的錯誤 – Fakerhardcore 2012-03-15 10:04:28

+2

@Fakerhardcore什麼「相同」?現在沒有「GROUP BY」。所以,錯誤信息必須不同。 – 2012-03-15 10:16:57

+0

@FractalizeR這是完全一樣的錯誤'「[錯誤] 1111 - 無效使用組功能的」'我也糊塗了。 – Fakerhardcore 2012-03-15 10:25:50