怎样建立这个视图?

cherrymas 2002-10-14 09:24:20
有两个表1表和2表,其中均含有A、B、C、D四个字段,而且A、B两个字段是1表的主键,现在2表中存在A、B两个字段均相同但C、D两个字段不同的记录,且2表中的A+B要比1表中的A+B字段数量多,现在想建立一个视图满足如下条件:
1。视图记录主要取自2表
2.A+B相同的记录进行合并,C、D两个字段从1表中取标准值;(也可在2表中取一固定值)
A+B在1表中不存在的记录C、D两个字段在2表中取一个值(即视图中不应再存在 A+B相同而C、D不同的记录。
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cherrymas 2002-10-15
  • 打赏
  • 举报
回复
两个表是这样的:
1表:
结构:zh(主键) tb(主键)mc mzh
记录:R30 01 保护森林 0.10
2表
结构:dwdm(主键) month(主键) zh tb mc mzh sl je
记录 001 06 R30 01 保森 0.1 1000 100
001 06 R30 01 保护 0.10 5000 500
001 06 R31 02 蓝鸟 0.60 8000 4800
001 06 R31 03 孔雀 0.8 2000 1600
001 06 R31 03 孔雀1 0.80 1000 800

视图结果:
记录: 001 06 R30 01 保护森林 0.10 6000 600
001 06 R31 02 蓝鸟 0.60 8000 4800
001 06 R31 03 孔雀 0.8 3000 2400
cherrymas 2002-10-14
  • 打赏
  • 举报
回复
边城骆驼老兄,你的语句我试过了,也不能解决A+B相同的字段自动合并的问题,即视图中不能保证A+B的唯一性。
请再琢磨一下吧。
洪十二 2002-10-14
  • 打赏
  • 举报
回复
create view view_name (a,b,c,d,e,f)
as
select b.a,b.b,b.c,b.d,a.c,a.d
from
(select a,b,c,d from 表1) a,
(select a,b,c,d from 表2) b
where a.a = b.a(+)
and a.b = b.b(+)
David1289 2002-10-14
  • 打赏
  • 举报
回复
好像并不困难,但不是很明白你的最终目的,能不能再说清楚一点?
cherrymas 2002-10-14
  • 打赏
  • 举报
回复
linzy:您好!
您所提供的方法实现了A+B相同的字段的记录的唯一性,但却没有实现2表中A+B相同的字段的记录的数值型字段H字段的相加,而只是取了其中一条记录的数值,上述要求怎样实现?
vaticinator 2002-10-14
  • 打赏
  • 举报
回复
create view view_name (a,b,c,d,e,f)
as
select b.a,b.b,b.c,b.d,a.c,a.d
from
(select a,b,c,d from 表1) a,
(select distinct a,b from 表2) b
where a.a = b.a(+)
and a.b = b.b(+)
linzy 2002-10-14
  • 打赏
  • 举报
回复
(select a,b,c,d from 表2)
换成
(select a,b,c,d
from 表2 c
where c.rowid = (select max(rowid)
from 表2 d
where c.a =d.a and c.b =d.b ))
就可以了

17,380

社区成员

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

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