Advertisement
mess9

Untitled

Oct 16th, 2020
810
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.00 KB | None | 0 0
  1. -- набираем нлс с данными клиента для метода типовых сервисов /clients/bills
  2. -- у клиента должно быть несколько счетов. что бы потом было на чём фильтры тестить.
  3. SELECT
  4.     c.nls,
  5.     c.LOCALSYSTEMID,
  6.     c.app_pkid,
  7.     c.version,
  8.     c.TITLE,
  9.     b.num
  10. FROM
  11.     MDM6.CLIENT c
  12.     INNER JOIN
  13.         (   --этот подселект создаёт таблицу с которой маппмятся клиенты из clients
  14.             SELECT
  15.                 *
  16.             FROM
  17.             (   -- этот подселект отсеивает тех клиентов для которыз записей счетов менее трёх
  18.                 SELECT
  19.                     t.localsystemid,
  20.                     t.CLIENT_LOCALSYSTEMID,
  21.                     t.client_app_pkid,
  22.                     t.client_version,
  23.                     t.num
  24.                 FROM
  25.                 (           -- этот подселект ищет записи у которых CLIENT_LOCALSYSTEMID повторяется много раз
  26.                     SELECT  -- следовательно у этого клиента было несколько начислений.
  27.                         b.localsystemid,
  28.                         b.CLIENT_LOCALSYSTEMID,
  29.                         b.client_app_pkid,
  30.                         b.client_version,
  31.                         ROW_NUMBER () OVER (PARTITION BY b.CLIENT_LOCALSYSTEMID ORDER BY b.localsystemid) num
  32.                     FROM
  33.                         DWH6.BILLS sample(5) b -- sample magic
  34.                     WHERE 1=1
  35.                         AND CLIENT_APP_PKID = 9 -- точно ли только 9-й или можно другие, или что это это вообще значит?
  36.                         AND REGEXP_LIKE(b.CLIENT_LOCALSYSTEMID, '\d{7}')
  37.                 ) t
  38.                 WHERE 1=1
  39.                 AND num > 3
  40.                 ORDER BY t.num DESC
  41.             )
  42.             WHERE ROWNUM = 1 -- если rownum поставить тут, то работает быстрее
  43.         ) b
  44.             ON c.LOCALSYSTEMID = b.CLIENT_LOCALSYSTEMID
  45.             AND c.APP_PKID = b.client_app_pkid
  46.             AND c.VERSION = b.client_version
  47. WHERE 1=1
  48.     AND c.ENDDATE > SYSDATE
  49.     AND c.VERSION = 0
  50.     AND c.DELETED = 0
  51.     AND c.NLS IS NOT NULL
  52.     AND REGEXP_LIKE(c.nls, '\d{12}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement