105 lines
2.9 KiB
PL/PgSQL
105 lines
2.9 KiB
PL/PgSQL
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;
|