Advertisement
tyomasun

Untitled

Jun 25th, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 2.53 KB | None | 0 0
  1. SET search_path TO _00000003, public ;
  2. /*
  3. DROP INDEX _00000003."iКонтрагентКонтакт-РегламентИсполнительДата_$";
  4.  
  5. CREATE INDEX "iКонтрагентКонтакт-РегламентИсполнительДата_$"
  6.   ON _00000003."КонтрагентКонтакт"
  7.   USING btree
  8.   ("Регламент", "Исполнитель", "Дата" DESC);
  9. */
  10.  
  11.  
  12. EXPLAIN(buffers, analyze, verbose)
  13.  
  14. WITH cteMyOfficeDocs AS (
  15.     -- Области видимости
  16.       SELECT UNNEST('{196}' :: INTEGER []) deptId
  17. ),
  18.  
  19.    dept AS (
  20.       SELECT
  21.         x."@Лицо" "Лицо",
  22.         x."Раздел",
  23.         x."Название",
  24.         x."Раздел@"
  25.       FROM
  26.         "СтруктураПредприятия" x
  27.       WHERE
  28.         x."Тип" = 0
  29.  
  30.         AND EXISTS(
  31.             SELECT NULL
  32.             FROM cteMyOfficeDocs s
  33.             WHERE
  34.               s.deptId = x."@Лицо"
  35.  
  36.             LIMIT 1
  37.         )
  38.  
  39.   ),
  40.  
  41.    -- Сотрудники отделов
  42.    deptUsers AS (
  43.       SELECT
  44.         sv."ЧастноеЛицо"                                "Лицо",
  45.         sv."СтруктураПредприятия",
  46.         COALESCE(p."Фамилия" || ' ', '') || COALESCE(SUBSTR(p."Имя", 1, 1) || '.', '') ||
  47.         COALESCE(SUBSTR(p."Отчество", 1, 1) || '.', '') "Название",
  48.         sv."Пользователь"
  49.       FROM "СвязиПользователя" sv
  50.         INNER JOIN "ЧастноеЛицо" p ON sv."ЧастноеЛицо" = p."@Лицо"
  51.       WHERE
  52.         sv."ЧастноеЛицо" IS NOT NULL AND
  53.         sv."УправленческаяСтруктура" AND
  54.         sv."$Черновик" IS NULL
  55.  
  56.         AND EXISTS(
  57.             SELECT NULL
  58.             FROM dept d
  59.             WHERE d."Лицо" = sv."СтруктураПредприятия"
  60.         )
  61.    )
  62.  
  63.  
  64.    
  65.    SELECT
  66.       (a)."Контрагент",
  67.       (a)."НазваниеКонтрагента",
  68.       (a)."Дата"
  69.    FROM (
  70.       SELECT
  71.          unnest(ARRAY(
  72.             SELECT k
  73.             FROM "КонтрагентКонтакт" k
  74.             WHERE
  75.                k."Регламент" = 121 AND
  76.                k."Исполнитель" = d."Лицо"
  77.             ORDER BY k."Регламент" ASC NULLS LAST, k."Исполнитель" ASC NULLS LAST, k."Дата" DESC NULLS LAST
  78.             LIMIT 2000
  79.          )) a
  80.       FROM deptUsers d
  81.    ) t
  82.    ORDER BY (a)."Дата" DESC
  83.    LIMIT 1000 OFFSET 1000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement