Advertisement
Deevpress

Pivot pl/sql

Jul 9th, 2024
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.56 KB | None | 0 0
  1. --CREATE EXTENSION IF NOT EXISTS tablefunc;
  2. SELECT
  3.     "INN"                       AS "ИНН",
  4.     "OGRN"                      AS "ОГРН",
  5.     "ShortName"                 AS "Краткое наименование",
  6.     dbo."Files"."Name"        AS "Имя файла",
  7.     "PivotTable"."MessageId"  AS "ID Сообщения",
  8.     "DictCatalogTasks"."Name" AS "Наименование задачи",
  9.     COALESCE(TO_CHAR("1"+INTERVAL '3 hour','yyyy-mm-dd hh24:mi:ss'),'NULL') AS "Отправлено",
  10.     COALESCE(TO_CHAR("2"+INTERVAL '3 hour','yyyy-mm-dd hh24:mi:ss'),'NULL') AS "Загружено",
  11.     COALESCE(TO_CHAR("3"+INTERVAL '3 hour','yyyy-mm-dd hh24:mi:ss'),'NULL') AS "Ошибка",
  12.     COALESCE(TO_CHAR("4"+INTERVAL '3 hour','yyyy-mm-dd hh24:mi:ss'),'NULL') AS "Принято в обработку",
  13.     COALESCE(TO_CHAR("5"+INTERVAL '3 hour','yyyy-mm-dd hh24:mi:ss'),'NULL') AS "Зарегистрировано",
  14.     COALESCE(TO_CHAR("6"+INTERVAL '3 hour','yyyy-mm-dd hh24:mi:ss'),'NULL') AS "Отклонено"
  15.     FROM
  16.     (
  17.     SELECT * FROM  crosstab('SELECT r."MessageId", COALESCE(s."Value",r."ReceiptStatus") ReceiptStatus, MAX(r."DateReceipt") "DateReceipt"
  18.                               FROM dbo."MessageReceipts" r
  19.                               LEFT JOIN dbo."StatusEc" s ON s."Id" = r."StatusEcId"
  20.                               GROUP BY r."MessageId", coalesce(s."Value",r."ReceiptStatus")  ORDER BY 1',
  21.                                $$SELECT unnest('{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 18, 99}'::int[])$$
  22.                              )
  23.       AS SourceTable ("MessageId" uuid, "0" TIMESTAMP, "1" TIMESTAMP,"2" TIMESTAMP,"3" TIMESTAMP,"4" TIMESTAMP,"5" TIMESTAMP,"6" TIMESTAMP,
  24.                                           "7" TIMESTAMP, "8" TIMESTAMP,"9" TIMESTAMP,"10" TIMESTAMP,"18" TIMESTAMP,"99" TIMESTAMP
  25.                      )
  26.      )  "PivotTable"
  27. JOIN (
  28.     SELECT m.*, COALESCE(s."Value",m."Status") "CombinedStatus"
  29.     FROM dbo."Messages" m
  30.     LEFT JOIN dbo."StatusEc" s ON s."Id" = m."StatusEcId"
  31. ) AS m ON "PivotTable"."MessageId" = m."Id"
  32. JOIN dbo."Accounts" ON m."OwnerId" = dbo."Accounts"."Id"
  33. JOIN dbo."DictCatalogTasks" ON m."CatalogTaskId" = dbo."DictCatalogTasks"."Id"
  34. JOIN dbo."MessageFiles" ON m."Id" = dbo."MessageFiles"."Message_Id"
  35. JOIN dbo."Files" ON dbo."MessageFiles"."File_Id" = dbo."Files"."Id"
  36. WHERE
  37.     ((dbo."DictCatalogTasks"."Id"='832CB17D-8F5F-481A-827D-4D7EF3C53DD7' )
  38.       AND (m."CreationDate" BETWEEN (SELECT now() AT TIME ZONE 'utc')-INTERVAL '1 day' AND (SELECT now() AT TIME ZONE 'utc')+INTERVAL '1 day')
  39.       AND (m."CombinedStatus") NOT IN (0,8,9,3,6,5)
  40.       AND "1" < (SELECT now() AT TIME ZONE 'utc')-INTERVAL '1 hour'
  41.       AND (dbo."Accounts"."OGRN" IN ('1028900507657','1027806865481'))
  42.     )
  43.     OR
  44.     ((dbo."DictCatalogTasks"."Id"='832CB17D-8F5F-481A-827D-4D7EF3C53DD7' )
  45.       AND (m."CreationDate" BETWEEN (SELECT now() AT TIME ZONE 'utc')-INTERVAL '1 day' AND (SELECT now() AT TIME ZONE 'utc')+INTERVAL '1 day')
  46.       AND (m."CombinedStatus") NOT IN (0,8,9,3,6,5)
  47.       AND "2" < (SELECT now() AT TIME ZONE 'utc')-INTERVAL '1 hour'
  48.       AND (dbo."Accounts"."OGRN" IN ('1028900507657','1027806865481'))
  49.     )
  50.     OR
  51.      ((dbo."DictCatalogTasks"."Id"='832CB17D-8F5F-481A-827D-4D7EF3C53DD7' )
  52.       AND (m."CreationDate" BETWEEN (SELECT now() AT TIME ZONE 'utc')-INTERVAL '1 day' AND (SELECT now() AT TIME ZONE 'utc')+INTERVAL '1 day')
  53.       AND (m."CombinedStatus") NOT IN (0,8,9,3,6,5)
  54.       AND "4" < (SELECT now() AT TIME ZONE 'utc')-INTERVAL '1 hour'
  55.       AND (dbo."Accounts"."OGRN" IN ('1028900507657','1027806865481'))
  56.      )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement