固定列数的行列转换如
student subject grade
student 语文
student 数学
student 英语
student 语文
student 数学
student 英语
转换为
语文 数学 英语
student
student
语句如下
select studentsum(decode(subject语文 gradenull)) 语文
sum(decode(subject数学 gradenull)) 数学
sum(decode(subject英语 gradenull)) 英语
from table
group by student
不定列行列转换如
c c
我
是
谁
知
道
不
转换为
我是谁
知道
不
这一类型的转换必须借助于PL/SQL来完成这里给一个例子
CREATE OR REPLACE FUNCTION get_c(tmp_c NUMBER)
RETURN VARCHAR
IS
用于返回值
Col_c VARCHAR();
BEGIN
FOR cur IN (SELECT c FROM t WHERE c=tmp_c) LOOP
Col_c := Col_c||curc;
END LOOP;
Col_c := rtrim(Col_c);
RETURN Col_c;
END;