Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.70 KB | None | 0 0
  1. WITH t AS (SELECT
  2. ROW_NUMBER() OVER (ORDER BY id) AS paging,
  3.  res.* FROM (SELECT pr.id, pr.amount, r.id AS reg_id, r.name AS reg_name, pr.status_id, pr.description, s.name AS status_name
  4. , r.trigram, pm.id AS mreg_prod_id, pm.order_number AS order_number,
  5. tf.id AS tariff_id, tf.name AS tariff_name, tf.personality AS personality, tf.code AS tariff_code, tf.tech_name AS tariff_tech_name,
  6. v.id AS vendor_id, v.name AS vendor_name, hlr.id AS hlr_id, hlr.VALUE AS hlr_value,
  7. p.id AS profile_id, p.name AS profile_name, mr.id AS mr_id, mr.name AS mr_name, cd.code AS code_code,
  8. a.name AS auth_alg_name, cd.card_type_id, card_type_name, p.code AS profile_code, f.name AS file_name
  9. FROM usim_production_region pr
  10. JOIN usim_region r ON r.id = pr.reg_id
  11. JOIN usim_production_macroregion pm ON pm.id = pr.mreg_prod_id
  12. JOIN usim_status s ON s.id = pr.status_id
  13. JOIN usim_vendor v ON v.id = pm.vendor_id
  14. JOIN usim_profile p ON p.id = pr.profile_id
  15. LEFT JOIN usim_auth_algorythm a ON p.auth_algo_id=a.id
  16. JOIN usim_hlr hlr ON hlr.id = pr.hlr_id
  17. JOIN usim_macro_region mr ON mr.id = pm.mreg_id
  18. JOIN usim_tariff tf ON tf.id = pm.tariff_id
  19. LEFT JOIN usim_file f ON f.id = pr.file_info_id
  20. LEFT JOIN (
  21.   SELECT cd.*, d.name AS card_type_name, cm.mreg_id FROM usim_code cd
  22.   join usim_card_type d ON d.id = cd.card_type_id
  23.   join usim_code_macro_region cm ON cd.id = cm.code_id
  24. ) cd ON cd.mreg_id = mr.id AND cd.tariff_id = tf.id AND cd.card_type_id = pm.card_type_id
  25. WHERE (pr.status_id IN (35,48,38,55,39,36,37,40,47))) res
  26. )
  27. SELECT q.*,
  28. CASE WHEN INSTR(q.file_name, '_') = 0 THEN SUBSTR(q.file_name, 0, INSTR(q.file_name, '.') - 1) ELSE SUBSTR(q.file_name, 0, INSTR(q.file_name, '_') - 1) END AS full_file_name,
  29. (
  30.   SELECT MAX(h.history_date) FROM usim_status_change_history h
  31.   join usim_status_change ch ON ch.id = h.status_change_id
  32.   WHERE h.entity_type = 7 AND h.entity_id = q.id AND ch.status_to_id = 47
  33. ) AS attach_status_date,
  34. CASE WHEN h_ret_flag.entity_id IS NOT NULL THEN 1 ELSE 0 END AS ret_flag, -- признак возврата из планирования
  35. CASE WHEN h_files.cnt >= 3 THEN 1 ELSE 0 END AS all_files_flag -- признак того, что прикреплен полный комлект файлов
  36. FROM t q
  37. LEFT JOIN (
  38.   SELECT entity_id FROM usim_status_change_history
  39.   WHERE entity_type = 7 AND status_change_id IN (SELECT id FROM usim_status_change WHERE status_from_id = 35 AND status_to_id IN (47,55))
  40.   GROUP BY entity_id
  41. ) h_ret_flag ON h_ret_flag.entity_id = q.id
  42. LEFT JOIN (
  43.   SELECT entity_id, COUNT(id) AS cnt FROM usim_file WHERE entity_type_id = 7 AND file_type_id IN (6,7,8) GROUP BY entity_id
  44. ) h_files ON h_files.entity_id = q.id
  45. WHERE paging BETWEEN 1 AND 100
  46. ORDER BY paging;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement