Advertisement
tyomasun

Untitled

Jun 25th, 2015
255
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.93 KB | None | 0 0
  1. SET SEARCH_PATH TO _00000003, public;
  2.  
  3. EXPLAIN ( BUFFERS, ANALYZE, VERBOSE )
  4. WITH cteMyOfficeDocs AS (
  5.   -- Области видимости
  6.     SELECT UNNEST('{81}' :: INTEGER []) deptId
  7. ),
  8.  
  9.     dept AS (
  10.       SELECT
  11.         x."@Лицо" "Лицо",
  12.         x."Раздел",
  13.         x."Название",
  14.         x."Раздел@"
  15.       FROM
  16.         "СтруктураПредприятия" x
  17.       WHERE
  18.         x."Тип" = 0
  19.  
  20.         AND EXISTS(
  21.             SELECT NULL
  22.             FROM cteMyOfficeDocs s
  23.             WHERE
  24.               s.deptId = x."@Лицо"
  25.  
  26.             LIMIT 1
  27.         )
  28.  
  29.   ),
  30.  
  31.   -- Сотрудники отделов
  32.     deptUsers AS (
  33.       SELECT
  34.         sv."ЧастноеЛицо"                                "Лицо",
  35.         sv."СтруктураПредприятия",
  36.         COALESCE(p."Фамилия" || ' ', '') || COALESCE(SUBSTR(p."Имя", 1, 1) || '.', '') ||
  37.         COALESCE(SUBSTR(p."Отчество", 1, 1) || '.', '') "Название",
  38.         sv."Пользователь"
  39.       FROM "СвязиПользователя" sv
  40.         INNER JOIN "ЧастноеЛицо" p ON sv."ЧастноеЛицо" = p."@Лицо"
  41.       WHERE
  42.         sv."ЧастноеЛицо" IS NOT NULL AND
  43.         sv."УправленческаяСтруктура" AND
  44.         sv."$Черновик" IS NULL
  45.  
  46.         AND EXISTS(
  47.             SELECT NULL
  48.             FROM dept d
  49.             WHERE d."Лицо" = sv."СтруктураПредприятия"
  50.         )
  51.   )
  52.   ,
  53.     T AS (
  54.       SELECT
  55.         (a)."Контрагент",
  56.         (a)."Регламент",
  57.         (a)."НазваниеКонтрагента",
  58.         (a)."Исполнитель",
  59.         (a)."СтруктураПредприятия",
  60.         (a)."ДатаПоследнегоИтоговогоКонтакта",
  61.         (a)."ДатаПоследнегоПлановогоКонтакта",
  62.         (a)."Дата",
  63.         (a)."ПоследнийПлановыйКонтакт",
  64.         (a)."ПоследнийКонтакт",
  65.         (a)."Событие"
  66.       FROM (
  67.         SELECT UNNEST(ARRAY(
  68.                           SELECT KK
  69.                           FROM "КонтрагентКонтакт" KK
  70.                           --{filter_join}
  71.                       WHERE KK."Регламент" = 121
  72.         AND KK."Исполнитель" = d."Лицо"
  73.         ORDER BY KK."Регламент" ASC NULLS LAST, KK."Исполнитель" ASC NULLS LAST, KK."Дата" DESC NULLS LAST
  74.         LIMIT 2000
  75.       )
  76.   ) a
  77. FROM deptUsers d
  78. ) t
  79. ORDER BY (a)."Дата" DESC NULLS LAST
  80. LIMIT 1000 OFFSET 1000
  81. )
  82.  
  83.  
  84. SELECT KK.* /*
  85.   KK."Контрагент"               "ИдО",
  86.   KK."Контрагент",
  87.   KK."НазваниеКонтрагента"      "Название",
  88.   KK."Исполнитель",
  89.   KK."СтруктураПредприятия",
  90.   KK."Дата"                     "Дата",
  91.   ev."Примечание",
  92.   KK."Событие"                  "ПоследнийКонтакт",
  93.   f."Название"                  "Стадия",
  94.   p."Название"                  "Итог",
  95.   p."ФазаОснование",
  96.   p."ФазаСледствие",
  97.   p."Результат",
  98.   COALESCE(l."Название", '')    "Исполнитель.Название",
  99.   COALESCE(l2."Название", '')   "СтруктураПредприятия.Название",
  100.   COALESCE(Pr."@Лицо", 0)       "Предприниматель",
  101.   NULL :: INT                   "ИдУдаления",
  102.   KK."Регламент",
  103.   r."Название"                  "НазваниеРегламента",
  104.   r."Флаги" [3]                 "Регламент.Удален",
  105.   COALESCE(ev."ТипКонтакта", 0) "ТипКонтакта",
  106.   ev."ВидКонтакта",
  107.   bell."@ЗвонокАгента"          "Звонок",
  108.   bell."Запись",
  109.   bell."НаправлениеИсходящий",
  110.   res_bell."Название"           "РезультатЗвонка"
  111.   */
  112. FROM T KK /*
  113.   LEFT JOIN "Событие" ev ON ev."@Событие" = KK."Событие"
  114.   LEFT JOIN "Регламент" r ON KK."Регламент" = r."@Регламент"
  115.   LEFT JOIN "Переход" p ON p."@Переход" = ev."Переход"
  116.   LEFT JOIN "Фаза" f ON f."@Фаза" = p."ФазаСледствие"
  117.   LEFT JOIN "Предприниматель" Pr ON Pr."@Лицо" = KK."Контрагент"
  118.   LEFT JOIN "Лицо" l ON l."@Лицо" = KK."Исполнитель"
  119.   LEFT JOIN "Лицо" l2 ON l2."@Лицо" = KK."СтруктураПредприятия"
  120.  
  121.   LEFT JOIN "ЗвонокАгента" bell ON bell."@ЗвонокАгента" = ev."ЗвонокАгента"
  122.   LEFT JOIN "РезультатЗвонка" res_bell ON res_bell."@РезультатЗвонка" = bell."РезультатЗвонка"*/
  123.  
  124. ORDER BY "Дата" DESC NULLS LAST;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement