我正在运行(非常长)的查询,并且有大量重复的行。什么条款会导致这种情况,以及会解决什么问题?
我已经尝试在select子句中的一列上添加Distinct
。
Select Distinct location
,item_no
,order_no
from (select *
from stockA a
join r_except re using (item_no)
where re.location = 'locationA'
UNION
select *
from stockB b
join r_except re using (item_no)
where re.location = 'locationB'
) ss
left join r_except re
on ss.item_no = re.item_no
left join (select ih.invoice_no
,iih.item_no
,sum(shipped * case) tot_shipped
from invoice_hist ih inner join invoice_item_hist iih
on ih.invoice_no = iih.invoice_no
where ih.invoice_date between (date 'now' - interval '12 months') and date 'now'
group by ih.invoice_no, iih.item_no) as ihsum
on (ss.item_no = ihsum.item_no)
join (select us.uitem
,sum(ss.on_hand) uoh
,sum(ss.vendor_order) vendor_order
,max(case when ss.last_sale_date = '12/31/9999' then null else ss.last_sale_date end) last_sale_date
,max(re.level) r_level
from () ss inner join universal_no us
on (ss.uitem = uoh.uitem)
left join (select ss.uitem
,max(po.order_no) order_no
,max(po.order_date) order_date
from () ss inner join poitem poi
on ss.item_no = poi.item_no
inner join po
on po.order_no = poi.order_no
where poi.release_qty != poi.case_qty * poi.order_qty
group by ss.uitem
) po
on ss.uitem = po.uitem
这是删节的,其中一些可能不在select子句中,但那是因为它太长了。
答案 0 :(得分:3)
您可以看到的两件事是:
您是否加入了一对多关系的表格?这通常会导致多次返回相同的行。如果有多个子行连接到父级。
另一个更明显的原因可能是您的数据库中确实存在重复数据。