固定列数的行列转换如
南京网站建设公司创新互联,南京网站设计制作,有大型网站制作公司丰富经验。已为南京近千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的南京做网站的公司定做!
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 student
2、不定列行列转换如
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;
你说的是列宽吗?
col ename format a30;
使ename字段显示宽度为30个字符。
如果是列数,你在select的时候只写有限的列数,不就行了?
调宽度set linesize 2000
页数 set pagesize 2000;
然后把sql plus这个窗口调大
ORACLE默认是根据ROWID来排序的啊,ROWID是数据库唯一标识不能更改的,所以你想在数据库更改顺序是不可能。只能通过索引对字段排序,之后使用索引,这样效果其实一样的。
update Frs
set Frs.x_aqcs = '1、#2滤网进、出口门;'||chr(10)||chr(13)||'2、"禁止操作,有人工作"牌。'
where Frs.x_Bh='机1004007'
应该是可以的,可能是显示的问题