oracle 语句 增加br."OrCertNo" 这个字段 就无法正常进行分组

qq_25949165 2017-03-28 12:29:28
select biz."SoilUseArea","BuildArea",ba."AcceptID",biz."DoorPlate",biz."RE_UnitNo",biz."RE_SoilSeaCode",br."OrCertNo",biz."LayoutTypeName",br."SoilUseTo",max(ba."AcceptID")
from gdrereg."BizAccept" ba
left join gdrereg."BizHouseRelate" biz on ba."AcceptID"=biz."AcceptID"
left join gdrereg."MrSoilCert" br on ba."AcceptID"=br."AcceptID"
where ba."AcceptID"='65432320170324000006'
group by biz."SoilUseArea","BuildArea",ba."AcceptID",biz."DoorPlate",biz."RE_UnitNo",biz."RE_SoilSeaCode",biz."LayoutTypeName",br."SoilUseTo",br."OrCertNo"

gdrereg."BizAccept"中一条数据,
gdrereg."BizHouseRelate"中4条数据,
gdrereg."MrSoilCert"中4条数据,
如果不加br."OrCertNo"这个字段,结果就是4条记录,加这个字段就是16条记录。怎么才能实现添加这个字段,结果是四条记录呢

[/img]
...全文
421 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
js14982 2017-03-28
  • 打赏
  • 举报
回复
select t."SoilUseArea","BuildArea",t."AcceptID",t."DoorPlate",t."RE_UnitNo",t."RE_SoilSeaCode",br."OrCertNo",t."LayoutTypeName",br."SoilUseTo",max(t."AcceptID") 
from (
select biz."SoilUseArea","BuildArea",ba."AcceptID",biz."DoorPlate",biz."RE_UnitNo",biz."RE_SoilSeaCode",biz."LayoutTypeName",ba."AcceptID"
 from gdrereg."BizAccept" ba 
left join gdrereg."BizHouseRelate" biz on ba."AcceptID"=biz."AcceptID" 
where ba."AcceptID"='65432320170324000006' 
) t
left join gdrereg."MrSoilCert" br on ba."AcceptID"=br."AcceptID"
--where ba."AcceptID"='65432320170324000006' 
group by biz."SoilUseArea","BuildArea",ba."AcceptID",biz."DoorPlate",biz."RE_UnitNo",biz."RE_SoilSeaCode",biz."LayoutTypeName",br."SoilUseTo",br."OrCertNo"
大概就是想把前面2个表做左匹配关联后做成子查询,再关联第三个表
Diza1986 2017-03-28
  • 打赏
  • 举报
回复
合并的key是什麽,没有吗,所以无条件合并变成了笛卡尔积16条,这样么 你这两个查询分别把rownum取出来,然后用rownum做合并的key吧, 两个查询结果件数可能不一致的话注意用外连接
qq_25949165 2017-03-28
  • 打赏
  • 举报
回复
我想把 图片1和图片2的两个4条记录,合并成一张表显示出来
Diza1986 2017-03-28
  • 打赏
  • 举报
回复
引用 10 楼 qq_25949165 的回复:
问题就是我现在需要 这4个不一样的“OrCertNo” 能够不重复的显示出来, 如果我用max等取值 就会丢失3个数据呀,显示就不正确了
那不就16条了,你想OrCertNo1,OrCertNo2,OrCertNo3,OrCertNo4.。。。。。显示在一行上?要有1万个呢 问问题你得先说清楚啊,不知道你要干什么
qq_25949165 2017-03-28
  • 打赏
  • 举报
回复
问题就是我现在需要 这4个不一样的“OrCertNo” 能够不重复的显示出来, 如果我用max等取值 就会丢失3个数据呀,显示就不正确了
Diza1986 2017-03-28
  • 打赏
  • 举报
回复
引用 8 楼 qq_25949165 的回复:
嘿嘿 打错字段名了 是br."OrCertNo"
不加br."OrCertNo"分组时是4条 每一条其实都隐含了4个不一样的"OrCertNo",所以分组中加了."OrCertNo"之后结果就是16条了, 以希望依然只是4条,那么就需要明确针对不同的."OrCertNo"取哪一个,用聚合函数(max之类)去取,而不是加到分组里
qq_25949165 2017-03-28
  • 打赏
  • 举报
回复
嘿嘿 打错字段名了 是br."OrCertNo"
Diza1986 2017-03-28
  • 打赏
  • 举报
回复
引用 6 楼 qq_25949165 的回复:
这个问题 已经解决了 运行结果 和我写的一样 都是16条数据呀 但是把br."SoilUseTo" 这个字段去掉 就是4条 我快疯了
上面说是br."OrCertNo" 现在又说br."SoilUseTo" 懵懵的 groupby分组的项目只要有不同的组合就会多出一条结果是当然的,你想怎样?
qq_25949165 2017-03-28
  • 打赏
  • 举报
回复
这个问题 已经解决了 运行结果 和我写的一样 都是16条数据呀 但是把br."SoilUseTo" 这个字段去掉 就是4条 我快疯了
Diza1986 2017-03-28
  • 打赏
  • 举报
回复
引用 2 楼 qq_25949165 的回复:
left join gdrereg."MrSoilCert" br on t."AcceptID"=br."AcceptID" 为什么我运行 老是提示未定义列呢?? 我看都正常着呢呀
有t这个表吗
qq_25949165 2017-03-28
  • 打赏
  • 举报
回复
您给我提供的语句 运行出来还是16条………………
qq_25949165 2017-03-28
  • 打赏
  • 举报
回复
我不加分组,只是left join 也在那里提示未定义列
qq_25949165 2017-03-28
  • 打赏
  • 举报
回复
left join gdrereg."MrSoilCert" br on t."AcceptID"=br."AcceptID" 为什么我运行 老是提示未定义列呢?? 我看都正常着呢呀

3,497

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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