如何使用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;
我有一个名为 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;