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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Oracle将两行转换为一行相关的知识,希望对你有一定的参考价值。

我有一个名为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 Query获取下表模式?

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。

答案

试试这个。

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

以上是关于如何使用Oracle将两行转换为一行的主要内容,如果未能解决你的问题,请参考以下文章

python pandas将两行或多行文本合并为一行

将两行数据集转换为一列

将两行插入数据库表而不是一行

Ms Access 像这样将两行合二为一

sqlserver怎么将两行数据合并成一行

Oracle SQL:将当前行和前两行的excel嵌套if条件转换为SQL