2017-08-08 83 views
0

我確信我想要做的事情是顯而易見的,但我一直堅持了一個小時。在條件下獲得特定細胞的總和

這裏是我的數據庫的一個簡化版本:

+------------+---------+----------+---------+ 
| EXERCICE | MCOT | MCOT_1 | MCOT_2 | 
+------------+---------+----------+---------+ 
|  2016 | 1754.00 | 1385.00 | 776.00 | 
|  2016 | 3166.00 | 14291.00 | 582.00 | 
|  2015 | 1385.00 |  0.00 | 5820.00 | 
|  2016 | 0.00 | 4551.00 | 5969.00 | 
|  2014 | 792.00 | 3364.00 | 2522.00 | 
+------------+---------+----------+---------+ 

所有我想要做的是能在一個這樣或那樣的各列(MCOT,MCOT_1,MCOT_2)的歸納在一起,只要exercice年是一樣的

我的期望輸出如下:

+------------+--------------+---------------+ 
| max_year | last_year | year_before | 
+------------+--------------+---------------+ 
| 32474 |  7205  |  6678  | 
+------------+--------------+---------------+ 

我試着像

的幾件事
SELECT MCOT + MCOT_1 + MCOT_2 AS max_year WHERE EXERCICE = MAX(EXERCICE) FROM TABLE 

SELECT SUM(CASE WHEN EXERCICE = MAX(EXERCICE) THEN MCOT + MCOT_1 + MCOT_2 END) 
AS max_year FROM table 

我想我非常這樣做,但我認爲這將是比這更容易。

我該怎麼做?

+0

一個聰明的解決辦法是解決您的架構設計。 – Strawberry

+0

我希望我可以... – Jaeger

+0

嗯,你可以用一系列的聯盟來模擬它。 – Strawberry

回答

1

應該SELECTFROMTABLE然後WHERE狀態,爲了得到列的總和,你應該使用SUM()

SELECT SUM(MCOT + MCOT_1 + MCOT_2) AS Total 
FROM your_table 
WHERE EXERCICE = (SELECT MAX(EXERCISE) AS EXERCISE FROM your_table); 
+0

我得到'語句錯誤附近'當EXERCICE = MAX(EXERCICE)'第3行' – Jaeger

+0

嗯,明白了。我們需要選擇'MAX(EXERCISE)'並在查詢中使用它。已更新查詢。 –

+0

在第3行仍然有語法錯誤,但它圍繞着'WHEN EXERCICE ='(對不起,我不能幫助更多) – Jaeger