2017-06-20 106 views
1

我想将我的行更改为列。这是我现在有:将多行转换为列

NAME  | YEAR | INCOME | EXPENSE 
COMPANY-1 | 2017 | €30000 | €15000 
COMPANY-1 | 2016 | €50000 | €10000 
COMPANY-2 | 2017 | €20000 | €5000 
COMPANY-2 | 2016 | €80000 | €95000 

而这正是我想要的:

NAME  | INCOME_2017 | EXPENSE_2017 | INCOME_2016 | EXPENSE_2016 
COMPANY-1 | €30000  | €15000  | €50000  | €10000 
COMPANY-2 | €20000  | €5000  | €80000  | €95000 

已经有人一个想法如何,我可以做到这一点?我已经复制了很多PIVOT脚本。但是这并不奏效......

回答

1

你可以试试这个sql来获得想要的结果。

1)使用CASE获取所需的列。

2)使用最大条件获得最大值。

SELECT `name` , 
MAX(CASE WHEN `year` =2017 THEN `income` ELSE 0 END) AS INCOME_2017, 
MAX(CASE WHEN `year` =2017 THEN `expense` ELSE 0 END) AS EXPENSE_2017, 
MAX(CASE WHEN `year` =2016 THEN `income` ELSE 0 END) AS INCOME_2016, 
MAX(CASE WHEN `year` =2016 THEN `expense` ELSE 0 END) AS EXPENSE_2016 
FROM `test_data` GROUP BY `name` 
+1

它的工作原理!谢谢! – Mooelb