select
max(case mc when 'aa' then value end) aa ,
max(case mc when 'bb' then value end) bb,
max(case mc when 'cc' then value end) cc ,
max(case mc when 'dd' then value end) dd
from a
max(case mc when 'aa' then value end) aa ,
max(case mc when 'bb' then value end) bb,
max(case mc when 'cc' then value end) cc ,
max(case mc when 'dd' then value end) dd
from a
解决方案 »
- 跪求高手,oracle中联机重做日志问题
- OracleDataAdapter如何填充实现2个父子表
- ora-01652错误怎么办?
- 请教一个imp问题 表内有大量XML信息 报错是申请不到内存
- 分组SUM()值问题,是否是ORACLE的BUG!
- 关于没有主键的数据备份问题
- 如何在一张表有update在做,没提交前,控制别的select等待!
- 能否在ERwin中设定值自动增加的字段?
- 高份求教:怎么查看数据库的启动日志
- 求助:需要在APEX 动态操作中的PL/SQL语句块做一个确认取消对话框,求大神指教,最好有代码,谢谢
- 菜鸟问题--请问oracle 8i 是否有向sqlserver的可视化建表工具?
- 表中纪录中最大日期的sql怎么写?
max(decode(mc,'bb',value)) BB ,
max(decode(mc,'cc',value)) CC ,
max(decode(mc,'dd',value)) DD ,
from a
max(decode(mc,'bb',value)) BB ,
max(decode(mc,'cc',value)) CC ,
max(decode(mc,'dd',value)) DD ,
from a;
[Q]如何实现行列转换
[A]1、固定列数的行列转换
如
student subject grade
---------------------------
student1 语文 80
student1 数学 70
student1 英语 60
student2 语文 90
student2 数学 80
student2 英语 100
……
转换为
语文 数学 英语
student1 80 70 60
student2 90 80 100
……
语句如下:
select student,sum(decode(subject,'语文', grade,null)) "语文",
sum(decode(subject,'数学', grade,null)) "数学",
sum(decode(subject,'英语', grade,null)) "英语"
from table
group by student2、不定列行列转换
如
c1 c2
--------------
1 我
1 是
1 谁
2 知
2 道
3 不
……
转换为
1 我是谁
2 知道
3 不
这一类型的转换必须借助于PL/SQL来完成,这里给一个例子
CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER)
RETURN VARCHAR2
IS
Col_c2 VARCHAR2(4000);
BEGIN
FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP
Col_c2 := Col_c2||cur.c2;
END LOOP;
Col_c2 := rtrim(Col_c2,1);
RETURN Col_c2;
END;
/
SQL> select distinct c1 ,get_c2(c1) cc2 from table;即可摘自http://www.itpub.net/