Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SELECT /* Строки накладных с различающимися между Кернел и Фокспро строками (оптимизировано) */
- b.source,
- b.sender_id,
- contractor.name AS sender_name,
- b.receive_id,
- contractor2.name AS receive_name,
- b.weight,
- b.quantity,
- b.doc_date,
- b.doc_number,
- b.treaty_number,
- b.price,
- b.goods_id,
- goods.name AS goods_name
- FROM
- ( SELECT /*+ INDEX( write_down write_down_prime_line_id ) */ /* Строки накладных в Кернел */
- 'k' AS source,
- out_line.send_cnt_id AS sender_id,
- out_line.recip_cnt_id AS receive_id,
- write_down.pure_weight AS weight,
- write_down.quantity AS quantity,
- TRUNC( out_line.doc_date ) AS doc_date,
- out_line.doc_number AS doc_number,
- treaty.doc_number AS treaty_number,
- write_down.price AS price,
- write_down.gds_id AS goods_id
- FROM
- out_line,
- write_down,
- treaty
- WHERE
- /* Условия соединения */
- ( out_line.prime_line_id = write_down.prime_line_id ) AND
- ( write_down.supp_treaty_id = treaty.doc_id (+) ) AND
- /* Условия фильтрации */
- ( out_line.moving_kind_id IN ( 63, 64, 998000000000841, 900000000000281, 998000000001402, 998000000000101 ) ) AND
- ( out_line.pure_weight <> 0 ) AND
- ( out_line.doc_date >= TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 1, 10 ), 'dd.mm.yyyy') ) AND
- ( out_line.doc_date < TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 13, 10 ), 'dd.mm.yyyy') )
- UNION ALL
- SELECT /* Строки накладных в Фокспро */
- 'f',
- organization.cnt_id,
- organization2.cnt_id,
- a.weight,
- a.quan,
- a.datedoc,
- a.numdoc,
- a.numdog,
- a.price,
- a.goods_id
- FROM
- ( SELECT
- foxpro.fb_organization_f2k(nbseller) AS send_org_id,
- foxpro.fb_organization_f2k(nbreceive) AS recip_org_id,
- weight,
- quan,
- datedoc,
- numdoc,
- numdog,
- price,
- foxpro.fb_goods_f2k(prod) AS goods_id
- FROM
- foxpro.tmp$_baj_naklad ) a,
- organization,
- organization organization2
- WHERE
- /* Условия соединения */
- ( a.send_org_id = organization.id ) AND
- ( a.recip_org_id = organization2.id ) AND
- /* Условия фильтрации */
- ( datedoc >= organization.date_start ) AND
- ( datedoc < organization.sp_end_date ) AND
- ( datedoc >= organization2.date_start ) AND
- ( datedoc < organization2.sp_end_date ) AND
- ( datedoc >= TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 1, 10 ), 'dd.mm.yyyy' ) ) AND
- ( datedoc < TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 13, 10 ), 'dd.mm.yyyy' ) + 1 ) ) b,
- contractor,
- contractor contractor2,
- goods
- WHERE
- /* Условия соединения */
- ( b.sender_id = contractor.id ) AND
- ( b.receive_id = contractor2.id ) AND
- ( b.goods_id = goods.id ) AND
- /* Условие фильтрации */
- ( b.doc_number IN ( SELECT /* Номера отличающихся в Кернел и в Фокспро накладных */
- doc_number
- FROM
- /* Записи из Кернел номера накладных которых присутствуют в Фокспро */
- ( SELECT /*+ INDEX( write_down write_down_prime_line_id ) */
- out_line.send_cnt_id AS sender_id,
- out_line.recip_cnt_id AS receive_id,
- write_down.pure_weight AS weight,
- write_down.quantity AS quantity,
- TRUNC( out_line.doc_date ) AS doc_date,
- out_line.doc_number AS doc_number,
- treaty.doc_number AS treaty_number,
- write_down.price AS price,
- write_down.gds_id AS goods_id
- FROM
- out_line,
- write_down,
- treaty
- WHERE
- /* Условия соединения */
- ( out_line.prime_line_id = write_down.prime_line_id ) AND
- ( write_down.supp_treaty_id = treaty.doc_id (+) ) AND
- /* Условия фильтрации */
- ( out_line.moving_kind_id IN ( 63, 64, 998000000000841, 900000000000281, 998000000001402, 998000000000101 ) ) AND
- ( out_line.pure_weight <> 0 ) AND
- ( out_line.doc_date >= TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 1, 10 ), 'dd.mm.yyyy' ) ) AND
- ( out_line.doc_date < TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 13, 10 ), 'dd.mm.yyyy' ) + 1 ) AND
- ( out_line.doc_number IN ( SELECT /* Номера накладных в Фокспро */
- numdoc
- FROM
- foxpro.tmp$_baj_naklad
- WHERE
- ( datedoc >= TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 1, 10 ), 'dd.mm.yyyy' ) ) AND
- ( datedoc < TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 13, 10 ), 'dd.mm.yyyy' ) + 1 ) ) )
- MINUS
- /* Целиком совпадающие строки накладных Кернел и Фокспро */
- ( SELECT /*+ INDEX( write_down write_down_prime_line_id ) */
- out_line.send_cnt_id AS sender_id,
- out_line.recip_cnt_id AS receive_id,
- write_down.pure_weight AS weight,
- write_down.quantity AS quantity,
- TRUNC( out_line.doc_date ) AS doc_date,
- out_line.doc_number AS doc_number,
- treaty.doc_number AS treaty_number,
- write_down.price AS price,
- write_down.gds_id AS goods_id
- FROM
- out_line,
- write_down,
- treaty
- WHERE
- /* Условия соединения */
- ( out_line.prime_line_id = write_down.prime_line_id ) AND
- ( write_down.supp_treaty_id = treaty.doc_id (+) ) AND
- /* Условия фильтрации */
- ( out_line.moving_kind_id IN ( 63, 64, 998000000000841, 900000000000281, 998000000001402, 998000000000101 ) ) AND
- ( out_line.pure_weight <> 0 ) AND
- ( out_line.doc_date >= TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 1, 10 ), 'dd.mm.yyyy') ) AND
- ( out_line.doc_date < TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 13, 10 ), 'dd.mm.yyyy') + 1 )
- INTERSECT
- SELECT
- organization.cnt_id AS sender_id,
- organization2.cnt_id AS receive_id,
- a.weight AS weight,
- a.quan AS quantity,
- a.datedoc AS doc_date,
- a.numdoc AS doc_number,
- a.numdog AS treaty_number,
- a.price AS price,
- a.goods_id AS goods_id
- FROM
- ( SELECT
- foxpro.fb_organization_f2k( nbseller ) AS send_org_id,
- foxpro.fb_organization_f2k( nbreceive ) AS recip_org_id,
- weight,
- quan,
- datedoc,
- numdoc,
- numdog,
- price,
- foxpro.fb_goods_f2k( prod ) AS goods_id
- FROM
- foxpro.tmp$_baj_naklad ) a,
- organization,
- organization organization2
- WHERE
- /* Условия соединения */
- ( a.send_org_id = organization.id ) AND
- ( a.recip_org_id = organization2.id ) AND
- /* Условия фильтрации */
- ( datedoc >= organization.date_start ) AND
- ( datedoc < organization.sp_end_date ) AND
- ( datedoc >= organization2.date_start ) AND
- ( datedoc < organization2.sp_end_date ) AND
- ( datedoc >= TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 1, 10 ), 'dd.mm.yyyy' ) ) AND
- ( datedoc < TO_DATE( SUBSTR( '01.05.2005..31.05.2005', 13, 10 ), 'dd.mm.yyyy' ) + 1 ) ) ) ) )
- ORDER BY
- doc_number,
- source,
- goods_name,
- weight,
- quantity,
- price,
- treaty_number
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement