统计的结果保存到一起

gisinfo 2009-05-12 06:00:09
比如


select a from tab1 where zd=1
union
select b from tab1 where zd=2
union
select c from tab2 where zd=3

这可以把查出的结果 放到一起


但是我现在需要的是
我 查询的结果 是不同条件得到的我怎么放到一起

不要这形式
select ,,,, from (),(),()
union
select ,,,, from (),(),()

有其他好的方法实现么?
...全文
73 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangchu_63 2009-05-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gisinfo 的回复:]
比如我

写了个存储过程 有输入参数

create or replace procedure pro_khxstj(v_khmc varchar2,outCursor out SYS_REFCURSOR) is
v_khggl number;
v_khzkgl number;
v_khfpzkgl number;
v_khpjgmzks number;
begin
select round(sum(gxcd)/1000,3) into v_khggl from (
select distinct c.channelsid,a.gxcd from sip_gxb a ,sip_zkb b ,stru_channels c,stru_hole d,stru_subhole e
where a.gjz=c.chan…
[/Quote]
同意楼上的方法,不过自己写的函数运行的速度比较慢。你自己选择。
bw555 2009-05-13
  • 打赏
  • 举报
回复
建立几个函数 分别计算v_khggl ,v_khzkgl ,v_khpjgmzks
create or replace FUNCTION khggl (v_khmc  in varchar2) RETURN number IS
v_khggl number;
BEGIN
select round(sum(gxcd)/1000,3) into v_khggl from (
select distinct c.channelsid,a.gxcd from sip_gxb a ,sip_zkb b ,stru_channels c,stru_hole d,stru_subhole e
where a.gjz=c.channelsid and b.zkbh=e.subholeid and d.holeid=e.holeid and c.windowid=d.windowid
and b.khbh=v_khmc and (b.syzt='合同分配' or b.syzt='预分配') and a.jszt='竣工验收');
return v_khggl;
END;

其他和这个类似

查询的时候
select khmc,khggl(khmc),khzkgl(khmc),khpjgmzks(khmc)
from mytab
gisinfo 2009-05-13
  • 打赏
  • 举报
回复
比如我

写了个存储过程 有输入参数

create or replace procedure pro_khxstj(v_khmc varchar2,outCursor out SYS_REFCURSOR) is
v_khggl number;
v_khzkgl number;
v_khfpzkgl number;
v_khpjgmzks number;
begin
select round(sum(gxcd)/1000,3) into v_khggl from (
select distinct c.channelsid,a.gxcd from sip_gxb a ,sip_zkb b ,stru_channels c,stru_hole d,stru_subhole e
where a.gjz=c.channelsid and b.zkbh=e.subholeid and d.holeid=e.holeid and c.windowid=d.windowid
and b.khbh=v_khmc and (b.syzt='合同分配' or b.syzt='预分配') and a.jszt='竣工验收');
select round(sum(gxcd)/1000,3) into v_khzkgl from sip_gxb a ,sip_zkb b ,stru_channels c,stru_hole d,stru_subhole e
where a.gjz=c.channelsid and b.zkbh=e.subholeid and d.holeid=e.holeid and c.windowid=d.windowid
and b.khbh=v_khmc and (b.syzt='合同分配' or b.syzt='预分配') and a.jszt='竣工验收';
v_khpjgmzks:=round(v_khzkgl/v_khggl,3);
select round(sum(gxcd)/1000,3) into v_khfpzkgl from sip_gxb a ,sip_zkb b ,stru_channels c,stru_hole d,stru_subhole e
where a.gjz=c.channelsid and b.zkbh=e.subholeid and d.holeid=e.holeid and c.windowid=d.windowid
and (b.syzt='合同分配' or b.syzt='预分配')
and a.jszt='竣工验收';
open outcursor for select v_khmc ,v_khggl ,v_khzkgl ,v_khpjgmzks
,round((v_khzkgl/v_khfpzkgl)*100,3)||'%' from dual;
end ;

这等到的只是一个客户的统计 我要 10个客户的统计列在一起

像select
union
select
的形式

inthirties 2009-05-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 gisinfo 的帖子:]
比如


select a from tab1 where zd=1
union
select b from tab1 where zd=2
union
select c from tab2 where zd=3

这可以把查出的结果 放到一起


但是我现在需要的是
我 查询的结果 是不同条件得到的我怎么放到一起

不要这形式
select ,,,, from (),(),()
union
select ,,,, from (),(),()

有其他好的方法实现么?

[/Quote]

不明白楼主的意思

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧