Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- набираем нлс с данными клиента для метода типовых сервисов /clients/bills
- -- у клиента должно быть несколько счетов. что бы потом было на чём фильтры тестить.
- SELECT
- c.nls,
- c.LOCALSYSTEMID,
- c.app_pkid,
- c.version,
- c.TITLE,
- b.num
- FROM
- MDM6.CLIENT c
- INNER JOIN
- ( --этот подселект создаёт таблицу с которой маппмятся клиенты из clients
- SELECT
- *
- FROM
- ( -- этот подселект отсеивает тех клиентов для которыз записей счетов менее трёх
- SELECT
- t.localsystemid,
- t.CLIENT_LOCALSYSTEMID,
- t.client_app_pkid,
- t.client_version,
- t.num
- FROM
- ( -- этот подселект ищет записи у которых CLIENT_LOCALSYSTEMID повторяется много раз
- SELECT -- следовательно у этого клиента было несколько начислений.
- b.localsystemid,
- b.CLIENT_LOCALSYSTEMID,
- b.client_app_pkid,
- b.client_version,
- ROW_NUMBER () OVER (PARTITION BY b.CLIENT_LOCALSYSTEMID ORDER BY b.localsystemid) num
- FROM
- DWH6.BILLS sample(5) b -- sample magic
- WHERE 1=1
- AND CLIENT_APP_PKID = 9 -- точно ли только 9-й или можно другие, или что это это вообще значит?
- AND REGEXP_LIKE(b.CLIENT_LOCALSYSTEMID, '\d{7}')
- ) t
- WHERE 1=1
- AND num > 3
- ORDER BY t.num DESC
- )
- WHERE ROWNUM = 1 -- если rownum поставить тут, то работает быстрее
- ) b
- ON c.LOCALSYSTEMID = b.CLIENT_LOCALSYSTEMID
- AND c.APP_PKID = b.client_app_pkid
- AND c.VERSION = b.client_version
- WHERE 1=1
- AND c.ENDDATE > SYSDATE
- AND c.VERSION = 0
- AND c.DELETED = 0
- AND c.NLS IS NOT NULL
- AND REGEXP_LIKE(c.nls, '\d{12}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement