多个表串的时候去重怎么办

-一个大坑 2019-08-22 12:24:19
我也不知道哪个地方导致的重复,就准备在最外面一层加distinct去重
结果报错ORA-00936: missing expression

select 'WIWYNN' Sia,
b.MsfId,
c.Levela,
distinct(b.SiSPn) SiSPn,
c.si_s_c SiSC,
c.Vendor,
b.MsftSPn,
a.ljz QtyPerRack,
b.Descriptiona,
b.LeadTime,
b.CTypei,
b.CTypeii,
b.Alpgr,
b.maktx,
b.matkl
from (select matnr, idnrk, sum(func_sum(pathstr)) ljz
from (select connect_by_root ab.matnr matnr,
connect_by_root ab.idnrk idnrk,
CONNECT_BY_ISLEAF lf,
ltrim(sys_connect_by_path(ab.menge, '*'), '*') pathstr
from mra_bd_msf aa, sap_bom ab
where aa.wiwynn_pn = ab.matnr
connect by prior ab.idnrk = ab.matnr)
where lf = 1
group by matnr, idnrk) A
inner join (SELECT ba.msf_id MsfId,
bc.matnr SiSPn,
bc.matnr MsftSPn,
bc.idnrk,
bc.menge QtyPerRack,
bd.maktx Descriptiona,
ceil(nvl(bd.plifz / 7, 0)) LeadTime,
bd.zzconfig1 CTypei,
bd.zzconfig2 CTypeii,
bc.alpgr Alpgr,
bd.maktx,
bd.matkl,
level lv
FROM mra_bd_msf ba, sap_bom bc, sap_materialmaster bd
WHERE bc.werks = 'F136'
and bc.matnr = ba.wiwynn_pn
AND SYSDATE >= bc.datuv
AND (SYSDATE < bc.datuv1 OR bc.datuv1 IS NULL)
and bc.werks = bd.werks
and bc.idnrk = bd.matnr
START WITH bc.matnr = ba.wiwynn_pn
CONNECT BY PRIOR bc.idnrk = bc.matnr) B
on A.matnr = B.SiSPn
and A.idnrk = B.idnrk
left join mra_bd_pn c
on b.idnrk = c.pn
order by B.LV, B.SiSPn, b.idnrk
...全文
217 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
AHUA1001 2019-08-22
  • 打赏
  • 举报
回复
没有你的数据,不大好分析为什么会有重复数据。 你可以把DISTINCT放到SELECT后边试试看,不要括号。
stelf 2019-08-22
  • 打赏
  • 举报
回复
你需要一个表一个表,一个查询一个查询的分析数据是在哪里出现笛卡尔积的?一般是多对多的关联造成重复数据了,不能简单的用distinct来处理

17,377

社区成员

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

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