可以使用建议使我的查询更聪明

时间:2012-03-13 09:03:07

标签: sql oracle union

嗨大家我有以下查询,但工会使它很重,所以任何人都可以帮助修复我的查询。 有3种情况。 1. pack_no =一件物品的包装(在packitem内) 2. item = item内包装(内包装) 3. item =没有pack(在item_master内)

SELECT DISTINCT item, loc FROM
(SELECT e.pack_no item, g.store loc
 FROM dc_store_ranging a
 JOIN store g
   ON g.store_name_secondary = CAST(a.loc AS VARCHAR2(150 BYTE)) AND
      g.store_close_date >= SYSDATE
 LEFT JOIN dc_pim_export_vert b
        ON a.dpac = b.dpac AND b.artikel_type_LMS NOT IN ('S','V')
 LEFT JOIN dc_ccn190_sid_vtb c ON a.dpac = c.dpac
 JOIN item_master d
   ON (b.item = d.item OR c.item = d.item) AND d.status = 'A'
 LEFT JOIN packitem e
   ON (b.item = e.pack_no or c.item = e.pack_no) AND d.item = e.pack_no
 WHERE d.item NOT IN
      (SELECT f.item
       FROM item_attributes f
       WHERE f.sh_store_order_unit = 'N' AND f.sh_trade_unit = 'Y')
 UNION
 SELECT e.item, g.store loc
 FROM dc_store_ranging a
 JOIN store g
   ON g.store_name_secondary = CAST(a.loc AS VARCHAR2(150 BYTE)) AND
      g.store_close_date >= SYSDATE
 LEFT JOIN dc_pim_export_vert b
        ON a.dpac = b.dpac AND b.artikel_type_LMS NOT IN ('S','V')
 LEFT JOIN dc_ccn190_sid_vtb c ON a.dpac = c.dpac
 JOIN item_master d
   ON (b.item = d.item OR c.item = d.item) AND d.status = 'A'
 LEFT JOIN packitem e
        ON (b.item = e.pack_no or c.item = e.pack_no)
 WHERE e.item NOT IN
      (SELECT f.item
       FROM item_attributes f
       WHERE f.sh_store_order_unit = 'N' AND f.sh_trade_unit = 'Y')
 UNION
 SELECT d.item, g.store loc
 FROM dc_store_ranging a
 JOIN store g
   ON g.store_name_secondary = CAST(a.loc AS VARCHAR2(150 BYTE)) AND
      g.store_close_date >= SYSDATE
 LEFT JOIN dc_pim_export_vert b
        ON a.dpac = b.dpac AND b.artikel_type_LMS NOT IN ('S','V')
 LEFT JOIN dc_ccn190_sid_vtb c ON a.dpac = c.dpac
 JOIN item_master d
   ON (b.item = d.item OR c.item = d.item) AND d.status = 'A'
WHERE d.item NOT IN
      (SELECT f.item
       FROM item_attributes f
       WHERE f.sh_store_order_unit = 'N' and f.sh_trade_unit = 'Y')
);

0 个答案:

没有答案