Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET search_path = _00000003, public;
- EXPLAIN (analyze, buffers)
- WITH
- -- Иерархия по отделам с учетом областей видимости (см. startDeptFilter)
- dept AS (
- WITH RECURSIVE sp AS (
- SELECT
- x."@Лицо" "Лицо",
- x."Раздел",
- x."Название",
- x."Раздел@"
- FROM
- "СтруктураПредприятия" x
- WHERE
- x."Тип" = 0 AND
- x."Раздел" IS NULL
- UNION ALL
- SELECT
- z."@Лицо" "Лицо",
- z."Раздел",
- z."Название",
- z."Раздел@"
- FROM
- sp y
- INNER JOIN "СтруктураПредприятия" z ON z."Раздел" = y."Лицо" AND z."$Черновик" IS NULL AND z."ДатаЗакрытия" IS NULL
- WHERE
- z."Тип" = 0
- )
- SELECT * FROM sp
- ),
- -- Сотрудники отделов
- deptUsers AS (
- SELECT
- sv."ЧастноеЛицо" "Лицо",
- sv."СтруктураПредприятия",
- COALESCE(p."Фамилия" || ' ', '') || COALESCE(substr(p."Имя", 1, 1) || '.', '') || COALESCE(substr(p."Отчество", 1, 1) || '.', '' ) "Название",
- sv."Пользователь"
- FROM "СвязиПользователя" sv
- INNER JOIN "ЧастноеЛицо" p ON sv."ЧастноеЛицо" = p."@Лицо"
- WHERE
- sv."ЧастноеЛицо" IS NOT NULL AND
- sv."УправленческаяСтруктура" AND
- sv."$Черновик" IS NULL
- AND EXISTS (
- SELECT NULL
- FROM dept d
- WHERE d."Лицо" = sv."СтруктураПредприятия"
- )
- ),
- -- Сотрудники и отделы
- person AS (
- SELECT
- "Лицо",
- "Раздел",
- "Название",
- "Раздел@",
- NULL "Пользователь"
- FROM dept
- UNION ALL
- SELECT
- "Лицо",
- "СтруктураПредприятия" "Раздел",
- "Название",
- FALSE "Раздел@",
- "Пользователь"
- FROM deptUsers
- ),
- personFiltered AS (SELECT p."Лицо"
- , p."Раздел"
- FROM person p
- WHERE p."Раздел@" IS TRUE
- UNION ALL
- SELECT p."Лицо"
- , p."Раздел"
- FROM person p
- WHERE p."Раздел@" IS FALSE
- AND EXISTS (SELECT NULL
- FROM person p1
- WHERE p1."Лицо" = p."Раздел")
- UNION ALL
- SELECT p."Лицо"
- , p."Раздел"
- FROM person p
- WHERE p."Раздел@" IS FALSE
- AND p."Раздел" IS NULL)
- SELECT t."Регламент"
- , t."БезКонтактов"
- , t."ВРаботе"
- , t."ЗавершеноОтрицательно"
- , t."ЗавершеноПоложительно"
- FROM "ТемаСостояние" t
- INNER JOIN personFiltered p
- ON p."Лицо" = t."Лицо"
Advertisement
Add Comment
Please, Sign In to add comment