如何使用Oracle将两行合二为一

How to convert two rows in one using Oracle

我有一个名为 COMPANY_DETAILS 的 table,它共有 5 列


用户名 REVENUE_YEAR TOTAL_REVENUE TOTAL_ASSET
100 农行公司 2015 50000 30000
100 农行公司 2016 年 60000 40000
200 XYZ 公司 2015 85000 60000
200 XYZ 公司 2016 年 75000 55000

如何通过SQL查询得到下面的table模式?

用户名 REVENUE_YEAR15 TOTAL_REVENUE15 TOTAL_ASSET15 REVENUE_YEAR16 TOTAL_REVENUE16 TOTAL_ASSET16
100 农行 2015 50000 30000 2016 60000 40000
200 XYZ 公司 2015 85000 60000 2016 75000 55000

请帮助我。我正在使用 Oracle 11g。

试试这个。

select ID, NAME, 2015 REVENUE_YEAR15 ,
        SUM ( CASE WHEN REVENUE_YEAR = 2015 THEN TOTAL_REVENUE 
                        ELSE 0 END) TOTAL_REVENUE15,
        SUM ( CASE WHEN REVENUE_YEAR = 2015 THEN TOTAL_ASSET 
                        ELSE 0 END) TOTAL_REVENUE15,  
        2016 REVENUE_YEAR16 ,              
        SUM ( CASE WHEN REVENUE_YEAR = 2016 THEN TOTAL_REVENUE 
                        ELSE 0 END) TOTAL_REVENUE16,
        SUM ( CASE WHEN REVENUE_YEAR = 2016 THEN TOTAL_ASSET 
                        ELSE 0 END) TOTAL_REVENUE16    
FROM   COMPANY_DETAILS GROUP BY ID,NAME;    

DEMO