DatabaseCreation: 10 Customer device SIM timeline.sql

File 10 Customer device SIM timeline.sql, 1.6 KB (added by 231139, 11 days ago)
Line 
1DROP VIEW IF EXISTS public.v_customer_device_sim_timeline;
2
3CREATE VIEW public.v_customer_device_sim_timeline AS
4SELECT c.customer_id,
5 CASE WHEN c.customer_type = 'business' THEN c.company_name ELSE c.first_name || ' ' || c.last_name END AS customer_name,
6 a.account_number, s.subscription_number,
7 'device'::text AS asset_type, d.device_id AS asset_id, d.imei AS asset_identifier,
8 d.manufacturer, d.model, d.device_type, NULL::text AS sim_type,
9 da.assigned_from AS period_start, da.assigned_to AS period_end,
10 da.assignment_status AS lifecycle_status
11FROM public.customers c
12JOIN public.accounts a ON a.customer_id = c.customer_id
13JOIN public.subscriptions s ON s.account_id = a.account_id
14JOIN public.device_assignments da ON da.subscription_id = s.subscription_id
15JOIN public.devices d ON d.device_id = da.device_id
16UNION ALL
17SELECT c.customer_id,
18 CASE WHEN c.customer_type = 'business' THEN c.company_name ELSE c.first_name || ' ' || c.last_name END,
19 a.account_number, s.subscription_number,
20 'sim', sc.sim_id, sc.msisdn, NULL::text, NULL::text, NULL::text, sc.sim_type,
21 ssh.start_date, ssh.end_date,
22 CASE WHEN ssh.end_date IS NULL THEN 'active' ELSE 'historical' END
23FROM public.customers c
24JOIN public.accounts a ON a.customer_id = c.customer_id
25JOIN public.subscriptions s ON s.account_id = a.account_id
26JOIN public.sim_card_subscription_history ssh ON ssh.subscription_id = s.subscription_id
27JOIN public.sim_cards sc ON sc.sim_id = ssh.sim_id;
28
29
30COMMENT ON VIEW public.v_customer_device_sim_timeline IS
31'Unified device and SIM event timeline. UNION ALL avoids a device by SIM multiplication.';