Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET search_path = _00000003, public;
- /*
- ALTER TABLE _00000003."КонтактСтатистика" DROP COLUMN "Запланировано";
- ALTER TABLE _00000003."КонтактСтатистика" ADD COLUMN "Запланировано" integer;
- */
- do $$
- DECLARE
- vTheme record;
- vRowInserted INTEGER;
- BEGIN
- RAISE NOTICE '%: ЗАПУЩЕНО', clock_timestamp()::text;
- FOR vTheme IN (
- WITH RECURSIVE regs AS (
- SELECT
- x."@Регламент" "Регламент",
- x."Раздел",
- x."Раздел@",
- x."Название",
- x."Флаги",
- x."Лимит",
- x."Порядок",
- x."Норма",
- x."Идентификатор",
- x."Флаги"[3] "Удален"
- FROM "Регламент" x
- WHERE
- x."Идентификатор" = '8992e41a-a499-11e1-8c02-63ba74c41964'
- UNION ALL
- SELECT
- y."@Регламент" "Регламент",
- y."Раздел",
- y."Раздел@",
- y."Название",
- y."Флаги",
- y."Лимит",
- y."Порядок",
- y."Норма",
- y."Идентификатор",
- y."Флаги"[3] "Удален"
- FROM regs z
- INNER JOIN "Регламент" y ON z."Регламент" = y."Раздел"
- )
- SELECT *
- FROM regs
- WHERE "Раздел@" IS NOT TRUE
- ORDER BY "Регламент" DESC
- )
- loop
- DELETE FROM "Событие"
- WHERE
- "Тип" = 3 AND
- "Переход" IS NULL AND
- "Регламент" = vTheme."Регламент" AND
- "Исполнитель" IS NULL;
- WITH DATA AS (
- SELECT
- (date_trunc('day'::text, "Дата"::TIMESTAMP WITHOUT TIME zone)::DATE) "Дата",
- "СтруктураПредприятия",
- "Исполнитель",
- COUNT(*) cnt
- FROM "КонтрагентЗапланировано"
- WHERE
- "Регламент" = vTheme."Регламент"
- GROUP BY (date_trunc('day', "Дата"::TIMESTAMP WITHOUT TIME zone)::DATE), "СтруктураПредприятия", "Исполнитель"
- ),
- upd AS (
- UPDATE "КонтактСтатистика" ks
- SET "Запланировано" = d.cnt
- FROM DATA d
- WHERE
- ks."Дата" = d."Дата" AND
- ks."Регламент" = vTheme."Регламент" AND
- ks."СтруктураПредприятия" = d."СтруктураПредприятия" AND
- ks."Лицо" = d."Исполнитель"
- returning ks."Дата", ks."СтруктураПредприятия", ks."Лицо"
- ),
- ins AS (
- INSERT INTO "КонтактСтатистика" ("Дата", "Регламент", "СтруктураПредприятия", "Лицо", "Запланировано" )
- SELECT
- d. "Дата",
- vTheme."Регламент",
- d."СтруктураПредприятия",
- d."Исполнитель",
- d.cnt
- FROM DATA d
- WHERE
- NOT EXISTS (
- SELECT NULL
- FROM upd u
- WHERE
- u."Дата" = d."Дата" AND
- u."СтруктураПредприятия" = d."СтруктураПредприятия" AND
- u."Лицо" = d."Исполнитель"
- LIMIT 1
- )
- returning "Дата", "СтруктураПредприятия", "Лицо"
- )
- SELECT COUNT(*)
- INTO vRowInserted
- FROM ins;
- raise notice '%: Регламент = %, vRowInserted = %', clock_timestamp()::text, vTheme."Регламент", vRowInserted;
- END loop;
- RAISE NOTICE '%: ЗАВЕРШЕНО', clock_timestamp()::text;
- END; $$;
Advertisement
Add Comment
Please, Sign In to add comment