2014-02-27 50 views
-1

我有这个表中的Oracle DDBBSQL Oracle查询

ASSET | LEVELDATA | VALUE 
1  | Super1  | 500 
1  | Super2  | 400 
2  | Super1  | 300 
2  | Super2  | 150 
3  | Super1  | 180 
3  | Super2  | 50 

我需要证明:

ASSET | Super1 | Super2 
1  | 500 |  400 
2  | 300 |  150 
3  | 180 |  50 

帮助请!感谢

+2

做一些研究,在Oracle数据库中摆动。显示一些努力。 – Pratik

回答

0
select * 
from 
    (select ASSET 
    from tablename) 
    pivot 
    (count(ASSET) 
     for LEVELDATA in ('Super1', 'Super2')); 
+0

感谢您的帮助。数据透视运算符在我的SQL编辑器中不起作用。我不知道为什么。 – Madmartigan

0
select 
    asset, 
    max(case when leveldata = 'Super1' then value end) Super1, 
    max(case when leveldata = 'Super2' then value end) Super2 
from 
    bbdd 
group by 
    asset; 

正如其他人所指出的,可以达到同样的效果与pivot运营商设置:

select * from DDBB 
pivot (sum(value) for leveldata in ('Super1', 'Super2')) 

SQL fiddle

+0

我不知道我在做什么坏事...总是告诉我ORA-00933:SQL命令没有正确结束。 – Madmartigan

+0

你在哪里运行该声明? –

+0

我懂了:SELECT资产, (SUM(CASE WHEN leveldata N'SuperficieTE 'THEN值END)), (SUM(CASE WHEN leveldata N'SuperficieCO' THEN值END)), (CASE WHEN(SUM (CASE leveldata WHEN N'Super1'THEN END END))> =(SUM(CASE leveldata WHEN N'Super2'THEN END END)) THEN'TE' WHEN(SUM(CASE leveldata WHEN N'Super1'THEN END END ))<(SUM(CASE WHEN leveldata N'Super2' THEN值END)) THEN 'CO' END)AS “类型” FROM

AND leveldata IN( 'Super1', 'SUPER2') 组由资产 ORDER BY资产 – Madmartigan