Advertisement
Guest User

Untitled

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