INSERT INTO virtual_orders ( type, sn, "source", company_id, package_id, product_id, pay_channel, unit_price, counts, total_price, custom_price, order_at, created_at, updated_at ) ( SELECT MIN(type), order_sn, 1, MIN ( company_id ), MIN ( package_id ), MIN ( product_id ), MIN ( pay_channel ), MIN ( unit_price ), COUNT ( * ) AS counts, MIN ( unit_price ) * COUNT ( * ) AS total_price, MIN ( unit_price ) * COUNT ( * ) AS custom_price, MIN ( created_at ) AS order_at, MIN ( created_at ) AS created_at, MIN ( created_at ) AS updated_at FROM logs GROUP BY order_sn ) ON conflict ( sn, COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO NOTHING; INSERT INTO virtual_order_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) ( SELECT logs."type" AS "type", logs.sim :: BIGINT AS sim, virtual_orders.ID AS order_id, logs.company_id, logs.package_id, logs.counts, logs.created_at AS created_at, logs.created_at AS updated_at FROM logs LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn WHERE logs.type = 0 ) ON conflict ( sim, order_id, COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO NOTHING; INSERT INTO virtual_order_renewal_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) ( SELECT logs."type" AS "type", logs.sim :: BIGINT AS sim, virtual_orders.ID AS order_id, logs.company_id, logs.package_id, logs.counts, logs.created_at AS created_at, logs.created_at AS updated_at FROM logs LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn WHERE logs.type = 1 ) ON conflict ( sim, order_id, COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO NOTHING; INSERT INTO virtual_order_renewal_package_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) ( SELECT logs."type" AS "type", logs.sim :: BIGINT AS sim, virtual_orders.ID AS order_id, logs.company_id, logs.package_id, logs.counts, logs.created_at AS created_at, logs.created_at AS updated_at FROM logs LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn WHERE logs.type = 2 ) ON conflict ( sim, order_id, COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO NOTHING; INSERT INTO virtual_order_flows_package_cards ( "type", sim, order_id, company_id, package_id, counts, created_at, updated_at ) ( SELECT logs."type" AS "type", logs.sim :: BIGINT AS sim, virtual_orders.ID AS order_id, logs.company_id, logs.package_id, logs.counts, logs.created_at AS created_at, logs.created_at AS updated_at FROM logs LEFT JOIN virtual_orders ON virtual_orders.sn = logs.order_sn WHERE logs.type = 3 ) ON conflict ( sim, order_id, COALESCE ( deleted_at :: TIMESTAMP, '1970-01-01 08:00:00' :: TIMESTAMP )) DO NOTHING;