fix query

feature/reliability_stat
Cizz22 4 months ago
parent 5960070d13
commit a650b72c19

@ -33,56 +33,44 @@ async def get_all(db_session: DbSession):
h.num as pr_number,
h.issue_date as pr_issue_date,
h.status as pr_status,
pl.qty_ordered as pr_qty_ordered
pl.qty_ordered as pr_qty_ordered,
pl.description
FROM public.maximo_sparepart_pr_po h
JOIN public.maximo_sparepart_pr_po_line pl ON h.num = pl.num
WHERE h.type = 'PR'
AND h.issue_date IS NOT NULL
AND h.num LIKE 'K%'
ORDER BY pl.item_num, TO_DATE(h.issue_date, 'YYYY-MM-DD') DESC
)
)
SELECT DISTINCT ON (pr.item_num)
pr.item_num,
(SELECT description FROM public.maximo_sparepart_pr_po_line WHERE item_num = pr.item_num LIMIT 1) as description,
COALESCE((SELECT curbaltotal FROM public.maximo_inventory WHERE itemnum = pr.item_num), 0) as current_balance_total,
pr.description,
COALESCE(i.curbaltotal, 0) as current_balance_total,
pr.pr_number,
pr.pr_issue_date,
pr.pr_qty_ordered,
CASE
WHEN EXISTS (
SELECT 1 FROM public.maximo_sparepart_pr_po
WHERE type = 'PO' AND num = pr.pr_number
) THEN 'YES'
WHEN po.po_number IS NOT NULL THEN 'YES'
ELSE 'NO'
END as po_exists,
COALESCE((
SELECT pl.qty_received
FROM public.maximo_sparepart_pr_po h
JOIN public.maximo_sparepart_pr_po_line pl ON h.num = pl.num
WHERE h.type = 'PO'
AND h.num = pr.pr_number
AND pl.item_num = pr.item_num
LIMIT 1
), 0) as po_qty_received,
COALESCE((
SELECT pl.qty_ordered
FROM public.maximo_sparepart_pr_po h
JOIN public.maximo_sparepart_pr_po_line pl ON h.num = pl.num
WHERE h.type = 'PO'
AND h.num = pr.pr_number
AND pl.item_num = pr.item_num
LIMIT 1
), 0) as po_qty_ordered,
COALESCE((
SELECT h.estimated_arrival_date
FROM public.maximo_sparepart_pr_po h
JOIN public.maximo_sparepart_pr_po_line pl ON h.num = pl.num
WHERE h.type = 'PO'
AND h.num = pr.pr_number
AND pl.item_num = pr.item_num
LIMIT 1
), '') as po_estimated_arrival_date
COALESCE(po.qty_received, 0) as po_qty_received,
COALESCE(po.qty_ordered, 0) as po_qty_ordered,
COALESCE(po.estimated_arrival_date, '') as po_estimated_arrival_date
FROM latest_prs pr
LEFT JOIN public.maximo_inventory i ON pr.item_num = i.itemnum
LEFT JOIN LATERAL (
SELECT
h.num as po_number,
pl.qty_received,
pl.qty_ordered,
h.estimated_arrival_date
FROM public.maximo_sparepart_pr_po h
JOIN public.maximo_sparepart_pr_po_line pl ON h.num = pl.num
WHERE h.type = 'PO'
AND h.num = pr.pr_number
AND pl.item_num = pr.item_num
LIMIT 1
) po ON true
ORDER BY pr.item_num;
""")

Loading…
Cancel
Save