2012-03-15 13 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

英語で質問を書き直してください。 –

答えて

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

+2

@Fakerhardcore何が同じですか?現在GROUP BYはありません。したがって、エラーメッセージは異なる必要があります。 –

+0

@FractalizeRまったく同じエラーです "[Err] 1111 - グループ関数の無効な使用" '私はまた混乱します。 – Fakerhardcore