2017-08-12 183 views
0

我有一個正數&負數的列。 Col1中所有正數,Col2中負數和Col3中(Col1 - Col2)的總和是否可能?然後按最後一列排序mysql表正和負數的總和

Current table   New Table 
    ID Score    ID Pos Neg Diff    
    1 3     3 5  0  5 
    1 1     1 4  1  3 
    1 -1     2 2  1  1 
    2 1 
    2 -1 
    2 1 
    3 3 
    3 1 
    3 1 

這給了我的總數,但我想列出Pos和Neg數字以及。

SELECT ID, SUM(Score) as total FROM results 
GROUP BY ID ORDER BY total DESC 

回答

3

只需使用帶有單獨條件聚合的標準數據透視查詢來查看正數和負數。

SELECT 
    ID, 
    SUM(CASE WHEN Score >= 0 THEN Score ELSE 0 END) AS Pos, 
    SUM(CASE WHEN Score < 0 THEN -1*Score ELSE 0 END) AS Neg, 
    SUM(Score) AS Diff 
FROM results 
GROUP BY ID 
ORDER BY ID 

Demo

+0

工作一種享受!乾杯 – Ryan