作者fantasyj (如梦似幻)
看板Database
标题Re: [SQL ] oracle 同一栏位重复只列出一笔
时间Thu Jan 27 12:13:34 2011
※ 引述《jimbosanho (chacha)》之铭言:
恕删
: 终於解出来,放上来让大家看看吧!
: select segment1,
: description
: from(
: select msib.segment1,
: msib.description,
: msib.inventory_item_id
: from bom_bill_of_materials bbom,
: mtl_system_items_b msib
: where bbom.assembly_item_id = msib.inventory_item_id
: and exists ( select 1
: from bom_inventory_components bic
: where bic.bill_sequence_id = bbom.bill_sequence_id)
: union all
: select ' ' ||msib.segment1,
: msib.description,
: msib.inventory_item_id
: from bom_inventory_component bic,
: mtl_system_items_b msib
: where bic.component_item_id = msib.inventory_item_id
: and exist (select 1
: from bom_bill_of_materials bbom
: where bic.bill_sequence_id = bbom.bill_sequence_id)
: )
: order by inventory_item_id,segment1 desc
恕删....
看的出来您这段SQL使用的table是Oracle BOM & INV的部份,
但是您串错了,BOM_BILL_OF_MATERIALS与MTL_SYSTEM_ITEMS_B
之间的unique key 是 organizatin_id & inventory_item_id,
可能是贵公司的环境仅有一个organization,所以没出现笛卡尔
乘积的问题,如果是多组织的情况下,您这段SQL就错很大了....
建议您在写SQL的时候,先看看table之间的关连性(像这是Oracle
的STD table,就可以去metalink上找寻相关版本的各模组的TRM
文件,里面会介绍table & colume & unique key & foreign key),
希望对您有所帮助.....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.117.142.73
1F:推 jimbosanho:ㄏㄏ!!TRM我有看,我也忘记打组织ID,可再请问一件事吗? 01/29 01:24
2F:推 jimbosanho:请问怎麽用connect by跟start with来写这个问题 01/29 01:29
4F:→ fantasyj:google一下就很多范例,自行参考试试就可以了,只是sql不难 01/29 14:23