免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1078 | 回复: 5
打印 上一主题 下一主题

如何转换?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-10 11:44 |只看该作者 |倒序浏览
我使用SQL得到下面的结果:
表空间名称     使用率             大小(M)
TEMP1               1.24%              25       
TEMP2              62.58%           20522       

想经过转换,变成横表,格式如下:
表空间名称   使用率  大小(M)  表空间名称  使用率    大小(M)
TEMP1         1.24%   25         TEMP2       62.58%   20522

请指教该如何写SQL??

论坛徽章:
0
2 [报告]
发表于 2004-01-10 11:57 |只看该作者

如何转换??

create tablenew as
select  a.表空间名称,a.使用率,a.大小,b.表空间名称,b.使用率,b.大小
from tableold a,tableold b
where a.表空间名称='TEMP1' and b.表空间名称='TEMP2';

drop talbe tableold;

rename table tablenew to tableold;

注:可能会有多余的行,你删了多余的行吧

论坛徽章:
0
3 [报告]
发表于 2004-01-10 11:59 |只看该作者

如何转换??

create tablenew as
select * from tableold a,tableold b
where a.表空间名称='TEMP1' and b.表空间名称='TEMP2';

用*可以代替所有的字段

论坛徽章:
0
4 [报告]
发表于 2004-01-10 12:10 |只看该作者

如何转换??

原帖由 "huanggzcn" 发表:
create tablenew as
select * from tableold a,tableold b
where a.表空间名称='TEMP1' and b.表空间名称='TEMP2';

用*可以代替所有的字段


你的方法我没有看懂,我的意思是直接取得表空间的使用率还有使用空间,我的代码如下:
select s.tablespace_name                      tablespace_name,      
       to_char((sum(s.UsedSpace)/sum(s.bytes))*100,'9999999.99')||'%' SEP_USE,
       to_char(((sum(s.UsedSpace))/1024/1024),'9999999')         USE_SPACE,   
from ( select b.file_id,
              b.tablespace_name,
              b.bytes,
              (b.bytes-sum(nvl(a.bytes,0))) UsedSpace,
              sum(nvl(a.bytes,0)) FreeSpace,
              (sum(nvl(a.bytes,0))/(b.bytes)) * 100 FreePercentRatio
        from sys.dba_free_space a,sys.dba_data_files b
        where (
              b.tablespace_name = 'TEMP1'
              or b.tablespace_name = 'TEMP2'         
        )
        and a.file_id(+)=b.file_id
        group by b.file_id,b.tablespace_name,b.bytes
        order by b.tablespace_name
) s
group by s.tablespace_name
order by s.tablespace_name

论坛徽章:
0
5 [报告]
发表于 2004-01-10 12:31 |只看该作者

如何转换??

你把:
select s.tablespace_name tablespace_name,
to_char((sum(s.UsedSpace)/sum(s.bytes))*100,'9999999.99')||'%' SEP_USE,
to_char(((sum(s.UsedSpace))/1024/1024),'9999999') USE_SPACE,
from ( select b.file_id,
b.tablespace_name,
b.bytes,
(b.bytes-sum(nvl(a.bytes,0))) UsedSpace,
sum(nvl(a.bytes,0)) FreeSpace,
(sum(nvl(a.bytes,0))/(b.bytes)) * 100 FreePercentRatio
from sys.dba_free_space a,sys.dba_data_files b
where (
b.tablespace_name = 'TEMP1'
or b.tablespace_name = 'TEMP2'
)
and a.file_id(+)=b.file_id
group by b.file_id,b.tablespace_name,b.bytes
order by b.tablespace_name
) s
group by s.tablespace_name
order by s.tablespace_name;

当成tableold 代进去就可以了。

还有一种办法就是你把刚上面这段的记录插进一个表,也可以实现的[两种方法其实一样]

论坛徽章:
0
6 [报告]
发表于 2004-01-10 16:50 |只看该作者

如何转换??

use procedure!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP