Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.83 KB | None | 0 0
  1. DECLARE
  2.   s CLOB := '
  3. -- MAX DATE IS {{max_dt}}
  4. {{#hub}}
  5. SELECT  ptz.{{hub_code}}_id
  6.      , ptz.point_dt AS start_dt
  7.      , COALESCE (MAX (ptz.point_dt) OVER (PARTITION BY ptz.{{hub_code}}_id ORDER BY ptz.point_dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) - 1, DATE ''{{max_dt}}'') AS end_dt
  8.      {{#sat}}{{#atr}}, {{sat_code}}.{{atr_name}}{{/atr}}{{/sat}}
  9. FROM  ( {{#sat}}
  10.        {{^first_element}}
  11.        UNION ALL
  12.        {{/first_element}}
  13.        SELECT  {{hub_code}}_id, start_dt AS point_dt
  14.        FROM    {{hub_code}}_{{sat_code}}
  15.        UNION   ALL
  16.        SELECT  {{hub_code}}_id, end_dt + 1 AS point_dt
  17.        FROM    {{hub_code}}_{{sat_code}}
  18.        WHERE   ent_dt <> DATE ''{{max_dt}}''
  19.        {{/sat}}
  20.      ) ptz
  21.      {{#sat}}
  22.      LEFT JOIN {{hub_code}}_{{sat_code}} {{sat_code}} ON {{sat_code}}.{{hub_code}}_id = ptz.{{hub_code}}_id AND ptz.point_dt BETWEEN {{sat_code}}.start_dt AND {{sat_code}}.end_dt
  23.      {{/sat}}
  24. {{/hub}}';
  25.  
  26.   j CLOB := '
  27. { "max_dt" : "9999-12-31"
  28. , "hub" :
  29.  [ { "hub_code" : "agrret"
  30.    , "sat" :
  31.      [ { "sat_code" : "cond"
  32.        , "atr" :
  33.          [ { "atr_name" : "cond_1_val" }
  34.          , { "atr_name" : "cond_2_val" }
  35.          ]
  36.        }
  37.      , { "sat_code" : "proc"
  38.        , "atr" :
  39.          [ { "atr_name" : "proc_1_val" }
  40.          , { "atr_name" : "proc_2_val" }
  41.          , { "atr_name" : "proc_3_val" }
  42.          ]
  43.        }
  44.      ]
  45.    }
  46.  , { "hub_code" : "acct"
  47.    , "sat" :
  48.      [ { "sat_code" : "h"
  49.        , "atr" :
  50.          [ { "atr_name" : "h_1_val" }
  51.          , { "atr_name" : "h_2_val" }
  52.          , { "atr_name" : "h_3_val" }
  53.          , { "atr_name" : "h_4_val" }
  54.          ]
  55.        }
  56.      ]
  57.    }
  58.  ]
  59. }';
  60.  
  61. BEGIN
  62.   APEX_BI.m_te_pkg.p_parse (s);
  63.   DBMS_OUTPUT.put_line (APEX_BI.m_te_pkg.f_process (j));
  64. END;
  65. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement