2016-01-14 59 views
0

我想要選擇值,執行一些計算,例如乘以兩列,然後在列值相同的位置添加它們。舉例來說,如果我有這樣一個表如下:在存在公共列值的情況下執行計算

id  prm 
1  12 
3  14 
1  13 
2  20 
1  17 
3  11 

我想先乘ID和PRM,然後加入他們,只要有共同的ID,所以第1,第3和第5行會被添加,並第2和第6行將被添加。然後我希望輸出按照id的降序排列。最後出來放將如下所示:

75 40 42 

由於3 * 14 + 3 * 11 = 75,2×20 = 40,和1 * 12 + 1 * 13 + 1 * 17 = 42。 我希望我的問題很清楚。 有沒有辦法在一個SQL語句中做到這一點?

+0

http://sqlfiddle.com/#!9/07290/8 – Gayathri

回答

0

您可以只需group by ID。

select id, sum(id*prm) 
from yourtable 
group by id 

要得到的結果在單行中,你可以做

select 
max(case when id = 1 then `total` end) as id1, 
max(case when id = 2 then `total` end) as id2, 
max(case when id = 3 then `total` end) as id3 
from (
select id, sum(id*prm) as `total` 
from yourtable 
group by id) t 
相關問題