如何使用Oracle将两行转换为一行

时间:2017-12-17 16:58:16

标签: oracle oracle11g oracle10g oracle-sqldeveloper

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


ID  NAME     REVENUE_YEAR  TOTAL_REVENUE  TOTAL_ASSET
100 ABC CORP 2015          50000          30000 
100 ABC CORP 2016          60000          40000
200 XYZ CORP 2015          85000          60000
200 XYZ CORP 2016          75000          55000

如何通过SQL查询获取下表模式?

ID  NAME     REVENUE_YEAR15  TOTAL_REVENUE15  TOTAL_ASSET15 REVENUE_YEAR16  TOTAL_REVENUE16  TOTAL_ASSET16
100 ABC CORP 2015            50000            30000         2016            60000          40000
200 XYZ CORP 2015            85000            60000         2016            75000          55000

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

1 个答案:

答案 0 :(得分:0)

试试这个。

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