修改ckb_order_cards

This commit is contained in:
邓皓元 2019-07-10 17:49:13 +08:00
parent 08141771a2
commit c21b6b27fa

View File

@ -1,47 +1,59 @@
DROP MATERIALIZED VIEW IF EXISTS ckb_order_cards; DROP MATERIALIZED VIEW IF EXISTS ckb_order_cards;
CREATE MATERIALIZED VIEW ckb_order_cards AS CREATE MATERIALIZED VIEW ckb_order_cards AS
WITH v as (
SELECT DISTINCT ON (sim)
id,
sim,
order_id,
company_id,
package_id,
service_start_at,
created_at
FROM virtual_order_cards_partition
ORDER BY sim,type
)
SELECT SELECT
v.id, v.id AS id,
v.sim, v.sim,
cards.imsi, cards.imsi,
cards.iccid, cards.iccid,
v.order_id, v.order_id AS order_id,
COALESCE (n.company_id, v.company_id) AS company_id, COALESCE (n.company_id, v.company_id) AS company_id,
c.NAME AS company_name, c.name AS company_name,
COALESCE (n.package_id, v.package_id) AS package_id, COALESCE (n.package_id, v.package_id) AS package_id,
p.NAME AS package_name, p.name AS package_name,
p.sn AS package_sn, p.sn AS package_sn,
p.carrier_operator, p.carrier_operator,
p.flows, p.flows,
t.service_start_at, v.service_start_at AS service_start_at,
t.service_end_at, m.service_end_at AS service_end_at,
v.created_at AS order_at, v.created_at AS order_at,
v.created_at, v.created_at AS created_at,
t.updated_at m.updated_at AS updated_at
FROM FROM v
virtual_order_cards_partition v
LEFT JOIN (
SELECT
virtual_order_cards_partition.sim,
MIN ( virtual_order_cards_partition.service_start_at ) AS service_start_at,
MAX ( virtual_order_cards_partition.service_end_at ) AS service_end_at,
MAX ( virtual_order_cards_partition.updated_at ) AS updated_at
FROM
virtual_order_cards_partition
GROUP BY
virtual_order_cards_partition.sim
) t ON t.sim = v.sim
LEFT JOIN ( LEFT JOIN (
SELECT SELECT
virtual_order_cards_partition.sim, sim,
virtual_order_cards_partition.company_id, MAX(service_end_at) AS service_end_at,
virtual_order_cards_partition.package_id MAX(updated_at) AS updated_at
FROM
virtual_order_cards_partition
WHERE deleted_at is null AND refunded_at is null
GROUP BY sim
) m ON m.sim = v.sim
LEFT JOIN (
SELECT DISTINCT ON (sim)
sim,
company_id,
package_id
FROM FROM
virtual_order_cards_partition virtual_order_cards_partition
WHERE WHERE
virtual_order_cards_partition.service_start_at <= now() AND virtual_order_cards_partition.service_end_at >= now() service_start_at < now() AND service_end_at >= now()
) n ON n.sim = v.sim AND deleted_at is null AND refunded_at is null
ORDER BY sim, service_start_at desc
) n ON n.sim = v.sim
LEFT JOIN cards ON cards.sim = v.sim LEFT JOIN cards ON cards.sim = v.sim
LEFT JOIN virtual_packages p ON p.ID = COALESCE (n.package_id, v.package_id) LEFT JOIN virtual_packages p ON p.id = COALESCE (n.package_id, v.package_id) AND p.deleted_at is null
LEFT JOIN virtual_companies c ON c.id = COALESCE (n.company_id, v.company_id) LEFT JOIN virtual_companies c ON c.id = COALESCE (n.company_id, v.company_id) AND c.deleted_at is null