急!急!急!急!请教大家一个,oracle存储过程中处理结果,本姑娘在此先谢过!

xuqunying0545 2009-02-05 09:21:17
比如一个查询结果是:
日期 班线 检验点 检验员 生产令号 不良合计(台)
2008-12-30 L1 PACKING TESTER M01 10
2008-12-30 L1 PACKING TESTER M02 15

另一个查询结果是:
日期 班线 检验点 检验员 生产令号 故障代码 台数
2008-12-30 L1 PACKING TESTER M01 Q2 5
2008-12-30 L1 PACKING TESTER M01 Q3 4
2008-12-30 L1 PACKING TESTER M01 Q8 2
2008-12-30 L1 PACKING TESTER M02 Q2 1
2008-12-30 L1 PACKING TESTER M02 Q3 2
2008-12-30 L1 PACKING TESTER M02 Q8 3

我现在是新建一张表:
日期 班线 检验点 检验员 生产令号 Q2 Q3 Q8 不良合计(台)
2008-12-30 L1 PACKING TESTER M01 5 4 2 10
2008-12-30 L1 PACKING TESTER M02 1 2 3 15

用存储过程实现这样的功能,你说怎么做呢
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hebo2005 2009-02-05
  • 打赏
  • 举报
回复
来晚了,decode或者case when+sum+group都行
yjdfff 2009-02-05
  • 打赏
  • 举报
回复
SELECT A.DATES,A.BX,A.JYD,A.JYY,A.SCHL,
MAX(CASE B.GZDM WHEN 'Q2' THEN B.TS END) Q2,
MAX(CASE B.GZDM WHEN 'Q3' THEN B.TS END) Q3,
MAX(CASE B.GZDM WHEN 'Q8' THEN B.TS END) Q8,
MAX(A.BLHJ) BLHJ
FROM TAB A,TAB1 B
WHERE A.SCHL=B.SCHL
GROUP BY A.DATES,A.BX,A.JYD,A.JYY,A.SCHL


结果:
DATES BX JYD JYY SCHL Q2 Q3 Q8 BLHJ
2008-12-30 L1 PACKING TESTER M01 5 4 2 10
2008-12-30 L1 PACKING TESTER M02 1 2 3 15
Andy__Huang 2009-02-05
  • 打赏
  • 举报
回复
不用存储过程也可以:
select 日期,班线,检验点,检验员,生产令号,
sum(case when 故障代码='Q2' then 台数 then 0 end) Q2,
sum(case when 故障代码='Q3' then 台数 then 0 end) Q3,
sum(case when 故障代码='Q8' then 台数 then 0 end) Q8,
sum(台数) 不良合计
from tb2
group by 日期,班线,检验点,检验员,生产令号
yu15tian 2009-02-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 tavey1985 的回复:]
晕死
[/Quote]

。。。。
tavey1985 2009-02-05
  • 打赏
  • 举报
回复
晕死
tavey1985 2009-02-05
  • 打赏
  • 举报
回复
暂且规定
查询结果1所用语句是A
查询结果2所用语句是B
从结果看:第2个查询结果是明细,第一个查询语句已经是一个汇总
至于你想要的结果我们在你第2个查询结果所用的语句B的基础上得到
procedure 小娘子
is

begin
insert into 娘子新建的表(rq,bx,jyd,jyy,sclh,Q2,Q3,Q8,sum)
select a.rq,a.bx,a.jyd,a.jyy,a.sclh,
sum(decode(a.gzdm,'Q2',a.sum,0)),
sum(decode(a.gzdm,'Q3',a.sum,0)),
sum(decode(a.gzdm,'Q8',a.sum,0)),
sum(decode(a.gzdm,'Q2',a.sum,'Q3',a.sum,'Q8',a.sum,0))
from (娘子所用语句B(select rq,bx,jyd,jyy,sclh,gzdm,sum from **表 where **条件)a
group by a.rq,a.bx,a.jyd,a.jyy,a.sclh;
exception when others then
----
end;
xuqunying0545 2009-02-05
  • 打赏
  • 举报
回复
haha,谢谢各位,做法跟我一样,那样要写100多行的sql语句呢.字段好多呢.
lockhall 2009-02-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hdhai9451 的回复:]
不用存储过程也可以:
select 日期,班线,检验点,检验员,生产令号,
sum(case when 故障代码='Q2' then 台数 then 0 end) Q2,
sum(case when 故障代码='Q3' then 台数 then 0 end) Q3,
sum(case when 故障代码='Q8' then 台数 then 0 end) Q8,
sum(台数) 不良合计
from tb2
group by 日期,班线,检验点,检验员,生产令号
[/Quote]

OKOKOK
honghong118cn 2009-02-05
  • 打赏
  • 举报
回复
SimpleYeah 2009-02-05
  • 打赏
  • 举报
回复
已阅~

17,090

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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